I am trying to bind a list to a parameter in a raw SQL query in sqlalchemy. This post suggests a great way to do so with psycopg2
as below.
some_ids = [1, 2, 3, 4]
query = "SELECT * FROM my_table WHERE id = ANY(:ids);"
engine.execute(sqlalchemy.sql.text(query), ids=some_ids)
However, this does not seems to work for my environment for SQL Server
with pyodbc
. Only one "?"
gets added instead of 4.
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError)
('Invalid parameter type. param-index=0 param-type=tuple', 'HY105')
[SQL: 'SELECT * FROM my_table WHERE id = ANY(?);'] [parameters: ((1, 2, 3, 4),)]
Is there any way to make this work? I would like to avoid manually creating placeholders if possible.
sqlalchemy version=1.0.13, pyodbc version=4.0.16