簡體   English   中英

如何使用pymysql將mySQL查詢結果存儲到pandas DataFrame中?

[英]How to store mySQL query result into pandas DataFrame with pymysql?

我正在嘗試使用pymysql將 mySQL 查詢結果存儲在 Pandas pymysql並且在構建數據幀時pymysql錯誤。 在此處此處找到了一個類似的問題,但似乎拋出了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'

如果我刪除indexcolumns參數:

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!

提前致謝!

為此使用Pandas.read_sql()

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

感謝您建議使用 pandas.read_sql()。 它也適用於執行存儲過程! 我在 MSSQL 2017 環境中對其進行了測試。

下面是一個例子(我希望它可以幫助其他人):

def database_query_to_df(connection, stored_proc, start_date, end_date):
    # Define a query
    query ="SET NOCOUNT ON; EXEC " + stored_proc + " ?, ? " + "; SET NOCOUNT OFF"

    # Pass the parameters to the query, execute it, and store the results in a data frame
    df = pd.read_sql(query, connection, params=(start_date, end_date))
    return df

試試這個:

import pandas as pd
import pymysql

mysql_connection = pymysql.connect(host='localhost', user='root', password='', db='test', charset='utf8')
                    
sql = "SELECT * FROM `brands`"
df = pd.read_sql(sql, mysql_connection, index_col='brand_id')
print(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM