web-dev-qa-db-ja.com

mySQLクエリの結果をpymysqlでpandas DataFrameに保存するには?

MySQLクエリの結果をpandasを使用してpymysqlを使用するDataFrameに保存しようとしていますが、データフレームの構築中にエラーが発生しています。同様の質問を見つけました here =および ここ ですが、pymysql固有のエラーがスローされているようです:

import pandas as pd
import datetime
import pymysql

# dummy values 
connection = pymysql.connect(user='username', password='password', databse='database_name', Host='Host')

start_date = datetime.datetime(2017,11,15)
end_date = datetime.datetime(2017,11,16)

try:
    with connection.cursor() as cursor:
    query = "SELECT * FROM orders WHERE date_time BETWEEN %s AND %s"

    cursor.execute(query, (start_date, end_date)) 

    df = pd.DataFrame(data=cursor.fetchall(), index = None, columns = cursor.keys())
finally:
    connection.close()

戻り値: AttributeError: 'Cursor' object has no attribute 'keys'

indexおよびcolumns引数を削除した場合:

try:
    with connection.cursor() as cursor:
    query = "SELECT * FROM orders WHERE date_time BETWEEN %s AND %s"

    cursor.execute(query, (start_date, end_date)) 

    df = pd.DataFrame(cursor.fetchall())
finally:
    connection.close()

戻り値 ValueError: DataFrame constructor not properly called!

前もって感謝します!

12
msoderstrom

これには Pandas.read_sql() を使用します。

query = "SELECT * FROM orders WHERE date_time BETWEEN ? AND ?"
df = pd.read_sql(query, connection,  params=(start_date, end_date))
17
MaxU