Python 使用变量值的SQL

Python 使用变量值的SQL,python,sql,sql-server,dynamic-sql,Python,Sql,Sql Server,Dynamic Sql,我在python中有一个如下所示的变量 run_id=5654 当我执行下面的代码时 df=curs.execute("select* from [DATABASE] where RunId=run_id") 我有一个错误: DataError:'22018',[22018][Microsoft][ODBC SQL Server驱动程序][SQL 将varchar值“run\u id”转换为时,服务器]转换失败 数据类型smallint。245 SQLExecDirectW 你能帮我一下吗?

我在python中有一个如下所示的变量

run_id=5654
当我执行下面的代码时

df=curs.execute("select* from [DATABASE] where RunId=run_id")
我有一个错误:

DataError:'22018',[22018][Microsoft][ODBC SQL Server驱动程序][SQL 将varchar值“run\u id”转换为时,服务器]转换失败 数据类型smallint。245 SQLExecDirectW


你能帮我一下吗?如何继续?

假设您使用pyodbc连接到SQL Server实例,您应该使用准备好的语句?作为占位符:

run_id = '5654'
df = curs.execute("SELECT * FROM [DATABASE] WHERE RunId = ?", (run_id,))

您需要学习如何将变量作为参数传递到查询可能与您的是的重复,但我遇到了以下错误:ProgrammingError:“无效的参数类型。”。param index=0 param type=numpy.int64','HY105'看起来RunId列是某种文本。然后需要绑定一个字符串变量q.v.my updated answer。