2016-06-09 1 views
20

MySQL 데이터베이스에서 Pandas 데이터 프레임으로 데이터를 가져옵니다. 내가 제대로 데이터를 표시 않는 데이터 프레임을 인쇄하지만 내 질문 경우MySQL 데이터베이스에서 열 이름을 포함한 Pandas 데이터 프레임으로 데이터 가져 오기

import mysql.connector as sql 
import pandas as pd 

db_connection = sql.connect(host='hostname', database='db_name', user='username', password='password') 
db_cursor = db_connection.cursor() 
db_cursor.execute('SELECT * FROM table_name') 

table_rows = db_cursor.fetchall() 

df = pd.DataFrame(table_rows) 

, 또한 열 이름을 유지할 수있다 : 다음 발췌 내가 사용하고있는 코드?

      0 1 2  3  4  5  6  7  8 
0 :ID[giA0CqQcx+(9kbuSKV== NaN NaN None None None None None None 
1 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None 
2 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None 
3 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None 
4 lXB+jIS)DN!CXmj>0(P8^]== NaN NaN None None None None None None 

내가 뭘하고 싶은 것은 팬더의 열 인덱스를 대체 할 열 이름을 유지하는 것입니다 예를 들면 다음과 같습니다 출력입니다. 예를 들어 0 대신에 컬럼 이름은 "First_column"이 될 것입니다. 이 문제를 해결할 좋은 방법이 있습니까? 아니면 MySQL에서 Pandas 데이터 프레임으로 내 데이터를 가져 오는보다 효율적인 접근 방법이 있습니까? IMO

+0

이 왜 [사용하지 않는 pd.read_sql()] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html)? – MaxU

답변

28

훨씬 더 효율적으로 MySQL 서버에서 데이터를 읽는을위한 팬더를 사용하는 것입니다 :

df = pd.read_sql('SELECT * FROM table_name', con=db_connection) 

이것은 또한 열 이름의주의를 기울여야한다 ...

관련 문제