MySQL Select Clause via Python

Page content

개요

데이터 조회

  • 다음 코드를 작성한다.
import mysql.connector

mydb = mysql.connector.connect(
    host = "localhost", 
    user = "root", 
    passwd = "evan", 
    database = "mulcampdb"
)

print(mydb)

my_cursor = mydb.cursor()

query = """
   SELECT * FROM users;
"""

my_cursor.execute(query)

result = my_cursor.fetchall()
for row in result:
    print(row)
    
print("완료")
  • 파일을 실행한다.
$ python database.py 
<mysql.connector.connection_cext.CMySQLConnection object at 0x000001FE5A985F10>
('Evan', 'Evan@gmail.com', 30, 1)
('Evan', 'Evan@gmail.com', 30, 2)
('Mary', 'Mary@gmail.com', 20, 3)
('Sara', 'Sara@gmail.com', 25, 4)
완료

pandas 데이터프레임으로 변환

  • 주어진 결괏값으로 pandas 데이터프레임으로 변환한다.
  • 먼저 라이브러리를 설치한다.
$ pip install pandas
  • 데이터 같이 코드를 작성한다.
import mysql.connector
import pandas as pd 

mydb = mysql.connector.connect(
    host = "localhost", 
    user = "root", 
    passwd = "evan", 
    database = "mulcampdb"
)

print(mydb)

my_cursor = mydb.cursor(dictionary=True)

query = """
   SELECT * FROM users;
"""

my_cursor.execute(query)

result = my_cursor.fetchall()
for row in result:
    print(row)

df = pd.DataFrame(result)
print(df)
print("완료")
  • 파일을 실행한다.
$ python database.py 
<mysql.connector.connection_cext.CMySQLConnection object at 0x000002C4C47D5490>
{'name': 'Evan', 'email': 'Evan@gmail.com', 'age': 30, 'user_id': 1}
{'name': 'Evan', 'email': 'Evan@gmail.com', 'age': 30, 'user_id': 2}
{'name': 'Mary', 'email': 'Mary@gmail.com', 'age': 20, 'user_id': 3}
{'name': 'Sara', 'email': 'Sara@gmail.com', 'age': 25, 'user_id': 4}
   name           email  age  user_id
0  Evan  Evan@gmail.com   30        1
1  Evan  Evan@gmail.com   30        2
2  Mary  Mary@gmail.com   20        3
3  Sara  Sara@gmail.com   25        4
완료

코드 복기

  • 커서를 생성하는 코드를 다시 확인해본다.
    • 이 코드는 dictionary=True는 조회 결과를 Dictionary 형태로 받기 위한 설정이다.
my_cursor = mydb.cursor(dictionary=True)
  • 이 코드로 인해, pandas DataFrame으로 변환하는 것이 매우 쉬워진다.
result = my_cursor.fetchall()
df = pd.DataFrame(result)
print(df)