SQLAlchemy 和 RAW SQL:列表作为输入

Sig*_*ils 3 python mysql sqlalchemy flask flask-sqlalchemy

我正在使用 Flask-SQLAlchemy,但在 SQL 语法中的 IN 子句中遇到了一些问题。我希望我的 IN 子句“读取”的数据是一个包含一些数据的列表,例如

args = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这是我的代码的样子。

connection = db.session.connection()
raw_sql = text("""
        SELECT
          *
        FROM 
         table
        WHERE data IN :list
        """)
query = connection.engine.execute(raw_sql, {'list' : args})
Run Code Online (Sandbox Code Playgroud)

我试过给 args 参数插入元组和列表,但没有任何效果。我要么得到:

  • Python 'tuple' 不能转换为 MySQL 类型 args = tuple([1, 2, 3])
  • Python 'list' 无法转换为 MySQL 类型,使用时 args = [1, 2, 3]


您如何使用 SQLAlchemy 从列表中读取并使用 RAW SQL 和参数作为输入?

小智 5

On 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)
Run Code Online (Sandbox Code Playgroud)