Python lista de ints en sentencias sql preparadas

Mi pregunta es algo similar a la lista de Python del parámetro String to SQL IN pero tengo una lista de enteros. El código de python que uso es:

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

Y el motor de base de datos Sybase responde con:

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

¿Cuál es la forma correcta de hacer esto?

OMI, una forma más legible de crear una cadena de consulta dinámica con marcadores de posición utilizando 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,)) ... 

No puede proporcionar la IN-list como un argumento. Debe proporcionar el número exacto de marcadores de posición en la cláusula SQL IN y luego proporcionar la matriz al método de ejecución :

 ids = [1000032, 1000048] sql = 'SELECT CompNo, CompName, CompType FROM Component WHERE DeptID IN (' \ + (',?' * len(ids))[1:] + ')' cursor.execute(sql, ids) 

Debes lanzar el array de int a array de cadenas:

 ",".join(map(str,ids))