python - SQLAlchemy 和原始 SQL : List as an input

标签 python mysql flask sqlalchemy flask-sqlalchemy

我正在使用 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/

相关文章:

python - OpenCV(在 C++ 中)到 MQTT 代理

Python - 如何检测用户何时通过 "X"按钮关闭控制台应用程序

php - 不同行的MySQL总和

mysql数据库复制错误日志。取回方法

sqlalchemy - 带动态数据库连接的flask-sqlalchemy

python csv到xlsx拆分文件excel

python - pyodbc - 导入错误 : DLL load failed:

mysql - 数据库加密,其中 key 可以在连接字符串中提供

python - Flask,并非所有参数都在字符串格式化期间转换

java - Flask REST POST 请求根据 json 长度失败 "Bad Request"