我正在尝试从MS SQL Server提取数据到数据帧中,并且试图像在参数化SQL查询中一样在SQL查询字符串中传递变量,但是会出错。
import pyodbc
import pandas as pd
snp = 27
connection = pyodbc.connect('Driver={SQL Server};'
'Trusted_Connection=yes;'
'Server=STASS8009\STASS800;'
'Database=dw_abhi;')
df = pd.read_sql("select top 1000 * from [dw_abhi].[t_snapshot] Where snapshot_key = snp", connection)
print (df.head())
输出:
DatabaseError: Execution failed on sql 'select top 1000 * from
[dw_abhi].[t_snapshot] Where snapshot_key = snp': ('42S22', "[42S22]
[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'snp'.
(207) (SQLExecDirectW)")
当我通过snapshot_key = 27
时有效。我想通过变量传递snapshot_key
的值吗?
PS:已经有一个与此类似的问题,但是那个问题是针对其他数据库的,并不能解决我的问题。我的问题专门针对MS SQL Server和Pyodbc。谢谢。