如何在pd.read_sql(“ MS SQL query”)下的SQL查询中传递变量?

时间:2019-01-15 11:27:29

标签: python sql

我正在尝试从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。谢谢。

0 个答案:

没有答案