簡體   English   中英

如何在熊貓中執行多個查詢?

[英]How to execute multiple queries in pandas?

如何使用sqlalchemy執行以下查詢?

import pandas as pd
import urllib
from sqlalchemy import create_engine
from sqlalchemy.types import NVARCHAR
params = urllib.parse.quote_plus(r'DRIVER={SQL Server};SERVER=localhost\SQLEXPRESS;Trusted_Connection=yes;DATABASE=my_db;autocommit=true;MultipleActiveResultSets=True')
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = create_engine(conn_str, encoding = 'utf-8-sig')

with engine.connect() as con:
    con.execute('Declare @latest_date nvarchar(8);')
    con.execute('SELECT @latest_date = max(date) FROM my_table')
    df = pd.read_sql_query('SELECT * from my_db where date = @latest_date', conn_str)

但是,出現了錯誤:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the scalar variable "@latest_date". (137) (SQLExecDirectW)')

如何解決這個問題呢?

謝謝。

您不需要聲明一個變量並使用如此多的查詢,您只需使用一個查詢即可:

SELECT * 
FROM my_db 
WHERE date = (SELECT max(date) 
              FROM my_db)

然后你可以使用,我使用反引號,因為日期是一個保​​留字:

with engine.connect() as con:
    query="SELECT * FROM my_db WHERE `date` = (SELECT max(`date`) FROM my_db)"
    df = pd.read_sql(query, con=con)

暫無
暫無

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

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