我很难在我的 Flask 应用程序中使用 LIKE 语句来查询我的数据库。我不断收到语法错误。
我的应用程序用于搜索书籍,我需要能够搜索所有列。我知道我需要使用 LIKE 但似乎我的变量中的单引号妨碍了。但是,我不是 100% 肯定的。
我知道如果我想从基于 id 的表中选择全部,格式将是这样的:
id = request.form.get('id')
name = db.execute("SELECT first_name FROM users WHERE id=:id", {"id": current_id})
如果我用 LIKE 尝试这种类似的格式,例如:
search = request.values.get('search')
books = db.execute("SELECT * FROM books WHERE author LIKE '%:search%'", {"search": search}).fetchall()
我收到此错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "Raymond"
LINE 1: SELECT * FROM books WHERE author LIKE '%'Raymond'%'
^
[SQL: SELECT * FROM books WHERE author LIKE '%%%(search)s%%']
[parameters: {'search': 'Raymond'}]
(Background on this error at: http://sqlalche.me/e/f405)
从这个错误中,我可以看到单引号被添加到我的变量值(搜索),但我没有成功去除或替换它们。所以我尝试了这种格式:
search = request.values.get('search')
books = db.execute("SELECT * FROM books WHERE author LIKE %s", ('%' + search + '%',)).fetchall()
但这也给了我一个错误: AttributeError: 'list' object has no attribute 'keys'
我已经为此工作了大约四天,但我尝试过的任何方法都没有奏效。我很茫然。我知道我需要去掉那些单引号,但我不确定怎么做。我有一种感觉,它非常容易,这会让我很伤心,但作为新手,我正在尽我最大的努力。
如果您需要任何其他信息,请告诉我。
万千封印
慕娘9325324
相关分类