1.
_db =pymysql.connect(
host = os.getenv('host'),
port = int(os.getenv('port')),
user= os.getenv('user'),
db = os.getenv('db_name')
)
host : MySQL 서버가 실행 중인 컴퓨터 주소(IP 또는 도메인)
port : MySQL이 사용하는 네트워크 포트 (기본값: 3306)
user :MySQL에 접속할 때 사용할 사용자 계정 (예: root, admin 등)
charset : 문자 인코딩 방식 (한글 지원을 위해 utf8mb4 권장)
2. cursor
cursor = _db.cursor(pymysql.cursors.DictCursor)
cursor.execute(select_sql)
MySQL에서 SQL 문을 실행하고 결과를 가져오는 역할을 하는 객체
커서를 생성하고나서 sql 쿼리 실행할 수 있음
대표적인 커서 메서드 : cursor.execute()/cursor.fetchall()/ corsor.close()
3. 커서 생성 방법 차이
1️⃣ 기본커서 : cursor = db.cursor()
-> 튜플 형태로 데이터를 반환, 열 이름 x
-> ex. [(1, 'Alice', 25), (2, 'Bob', 30)] 일때 result[0][1]으로 Alice 가져올 수 있음
2️⃣ DicCursor : cursor = db.cursor(pymysql.cursors.DictCursor)
-> 딕셔너리 형태로 데이터 반환, 열 이름 포함
4. * (가변 인자)
def select_query(_sql,*_val):
cursor.execute(_sql,_val)
sql_data = cursor.fetchall()
result = pd.DataFrame(sql_data)
return result
def utility_query(_sql, inplace = False):
cursor.execute(_sql)
if inplace:
_db.commit()
return "Query ok"
이 함수에서 인자로 *_val 을 받으면서 execute을 실행할때는 _val 을 사용해도 되는 이유
: execute()는 튜플을 기대하므로
val를 리스트로 받으면 튜플로 변환해야 함 -> cursor.execute(_sql, tuple(values))
'Data Analysis > Python for DA' 카테고리의 다른 글
| [Invest Class] 2. Bollinger 함수 생성 (0) | 2025.03.28 |
|---|---|
| [Invest Class] 1. buyandhold 함수 생성 (1) | 2025.03.28 |
| [pandas] 데이터분석 복습 3 (0) | 2025.03.18 |
| [데이터 수집] Requests/ BeautifulSoup (1) | 2025.03.14 |
| [pandas] 데이터 분석 복습 2 (0) | 2025.03.14 |