在准备好的sql语句中的Python列表

我的问题与
Python list of String to SQL IN parameter有点相同,但我有一个整数列表.我使用的python代码是:

ids = [1000032, 1000048]
sql = 'SELECT CompNo, CompName, CompType FROM Component WHERE DeptID IN (?)'    
cursor.execute(sql, [','.join(ids)])

Sybase数据库引擎响应:

pyodbc.Error: ('07006', "[07006] [Sybase][ODBC Driver][SQL Anywhere]Cannot convert '1000032','1000048' to a numeric (-157) (SQLExecDirectW)")

这样做的正确方法是什么?

最佳答案 IMO是一种使用
str.format构建带占位符的动态查询字符串的更易读的方法

ids = [1000032, 1000048]
sql = 'SELECT CompNo, CompName, CompType FROM Component WHERE DeptID IN ({0})' 
sql = sql.format(','.join('?' * len(ids)))
cursor.execute(sql, (ids,))
...
点赞