【问题标题】:SqlAlchemy Programming Error when using raw SQL Like operator [duplicate]使用原始 SQL Like 运算符时出现 SqlAlchemy 编程错误 [重复]
【发布时间】:2020-10-04 08:03:33
【问题描述】:

我正在尝试在我的 Flask 应用程序中运行 SQL 查询来搜索数据库。但是,当我运行查询时出现错误:

db.execute("SELECT * FROM books WHERE author LIKE '%:author%' ", {"author":query})

产生的错误是这样的(在我的输入中传递了“汤姆”):


sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "Tom"
LINE 1: SELECT * FROM books WHERE author LIKE '%'Tom'%' 
                                                 ^

[SQL: SELECT * FROM books WHERE author LIKE '%%%(author)s%%' ]
[parameters: {'author': 'Tom'}]
(Background on this error at: http://sqlalche.me/e/f405)

我已经用硬编码值测试了查询,它工作正常。我想知道是什么导致了错误以及如何解决它。

【问题讨论】:

    标签: sql flask sqlalchemy where-clause sql-like


    【解决方案1】:

    您需要字符串连接。很多 SQL 数据库都支持concat()(还有其他有等效的函数或运算符,例如标准运算符||):

    db.execute("SELECT * FROM books WHERE author LIKE CONCAT('%', :author, '%')", {"author":query})
    

    另一种选择是首先在您的应用程序中围绕您的参数连接'%'s,然后将其传递给查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      相关资源
      最近更新 更多