[英]How to execute multiple queries in pandas?
How to execute the following queries with 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;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)
However, an error occured:但是,出现了错误:
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the scalar variable "@latest_date". (137) (SQLExecDirectW)')
How to solve this problem?如何解决这个问题呢?
Thanks.谢谢。
You don't need to declare a variable and use so many queries, you can do it just with one query:您不需要声明一个变量并使用如此多的查询,您只需使用一个查询即可:
SELECT *
FROM my_db
WHERE date = (SELECT max(date)
FROM my_db)
And then you can use, i use backticks because date is a reserved word:然后你可以使用,我使用反引号,因为日期是一个保留字:
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.