Python 如何在pandas中执行多个查询?

Python 如何在pandas中执行多个查询?,python,sqlalchemy,Python,Sqlalchemy,如何使用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

如何使用
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)

谢谢你,纳乔。但是,我想知道如何执行多个查询。要执行多个查询,您可以按自己的位置执行。您唯一的问题是上次查询中的@latest_date没有任何值。您需要先存储查询中的值,然后在最后一次查询中使用它