将参数从Python传递到SQL Server

将参数从Python传递到SQL Server,python,sql,sql-server,pyodbc,Python,Sql,Sql Server,Pyodbc,我有这样的代码: conn = pyodbc.connect(<Connection Details>) c = conn.cursor() employee_id=(100,101) query = "select * from employees where employeeid in ?" c.execute(query,employee_id) conn=pyodbc.connect() c=连接光标() 员工id=(100101) query=“从

我有这样的代码:

conn = pyodbc.connect(<Connection Details>)
c = conn.cursor()

employee_id=(100,101)
query = "select * from employees where employeeid in ?"

c.execute(query,employee_id)
conn=pyodbc.connect()
c=连接光标()
员工id=(100101)
query=“从employeeid所在的员工中选择*?”
c、 执行(查询,员工id)
我得到这个错误:

'SQL包含1个参数标记,但提供了2个参数''HY000'

有没有办法传递这个参数?我不想通过串联创建动态数组


如果存在多个where条件,有没有办法在查询中命名参数标记?

如果我没记错,占位符是
%s
,而不是

无论如何,您可以使用format方法/字符串格式来完成作业:

conn = pyodbc.connect(<Connection Details>)
c = conn.cursor()
employee_id=(100,101)

query = "select * from employees where employee_id in {}"
c.execute(query.format(employee_id))
conn=pyodbc.connect()
c=连接光标()
员工id=(100101)
query=“从{}中有员工id的员工中选择*”
c、 执行(查询格式(员工id))

每个
与一个参数相关。您已经传递了2个参数。你预计会发生什么?如果你想做一个以上的查询,你应该运行类似于
executemany
,或者运行
executeme
一次以上,从这里检查接受的答案:@Som-1你是对的,我误读了代码,这就是为什么我删除了我的comment@MZ.there可能有几个雇员。所以我们不能预先确定“?”的数量,这不是一种安全的方法。这段代码可以进行SQL注入reason@som-我知道这不是一种安全的方式。我只是想知道怎么做,万一我想做的话。:)@Aditya检查我在问题下的评论-有一个指向类似问题的链接,其中提供了类似但更安全的代码: