2017-11-16 3 views
0

私はpymysqlを使用してpandas DataFrameにmySQLクエリ結果を格納しようとしていますが、データフレームを構築する際にエラーが発生しています。同様の質問herehereを見つけましたが、スローされpymysql固有のエラーがあるように見えます:mySQLのクエリ結果をpandasに保存する方法pymysqlを使用したDataFrame?

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() 

リターン:

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() 
AttributeError: 'Cursor' object has no attribute 'keys'

は、私がindexcolumns引数を削除した場合

が返されますValueError: DataFrame constructor not properly called!

事前に感謝します!このため

答えて

2

使用Pandas.read_sql()

query = "SELECT * FROM orders WHERE date_time BETWEEN ? AND ?" 
df = pd.read_sql(query, connection, params=(start_date, end_date)) 
関連する問題