我正在使用Flask-SQLAlchemy,我在SQL语法中遇到了一些IN子句的问题。我希望我的IN子句“读取”的数据是包含一些数据的列表,例如
args = [1, 2, 3]
这是我的代码的样子。
connection = db.session.connection()
raw_sql = text("""
SELECT
*
FROM
table
WHERE data IN :list
""")
query = connection.engine.execute(raw_sql, {'list' : args})
我已尝试将插入元组和列表插入到args参数中,但没有任何效果。我要么:
args = tuple([1, 2, 3])
args = [1, 2, 3]
如何从SQLAlchemy列表中读取并使用RAW SQL和参数作为输入?
答案 0 :(得分:4)
在python 3.7上:
import sqlalchemy
args = [1, 2, 3]
raw_sql = "SELECT * FROM table WHERE data IN :values"
query = sqlalchemy.text(raw_sql).bindparams(values=tuple(args))
conn.engine.execute(query)
答案 1 :(得分:0)
您应该尝试这种方法:
args = [1, 2, 3]
raw_sql = "SELECT * FROM table WHERE data IN %s"
params = [(args,)] # the comma allows to convert the list into a tuple
conn.engine.execute(raw_sql, params)