这个问题在这里已经有了答案:
cs50:like运算符,变量替换和%展开(1个答案)
11个月前关门了。
我试图在flask应用程序中运行sql查询来搜索数据库。但是,运行查询时出现错误: db.execute("SELECT * FROM books WHERE author LIKE '%:author%' ", {"author":query})
结果错误如下(在我的输入中传递了'tom':
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)
我用一个硬编码的值测试了这个查询,结果很好。我想知道是什么导致了错误,以及如何修复它。
1条答案
按热度按时间bq9c1y661#
需要字符串串联。许多sql数据库支持
concat()
(和其他具有等价函数或运算符的,如标准运算符||
):另一种选择是连接
'%'
首先在应用程序中围绕参数,然后将其传递给查询。