我正在使用 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]) 将 Python“tuple” 转换为 MySQL 类型
- 使用
args = [1, 2, 3]
时,Python“列表”无法转换为 MySQL 类型
如何使用 SQLAlchemy 并使用 RAW SQL 和参数作为输入从列表中读取内容?
最佳答案
在 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)
关于python - SQLAlchemy 和原始 SQL : List as an input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656459/