我试图在数据库中搜索一本书,因此我首先检查数据库中是否存在用户通知的数据(可以是标题、ISBN或作者姓名),然后检查是否存在部分数据,最后返回所有结果。你知道吗
为此,我使用SQLAlchemy和FLASK-where在Python中编写了这段代码
searchBy
是数据库中列的名称,并且searchFor
是用户输入的数据是的。你知道吗
books = db.execute(f"SELECT * FROM books JOIN authors ON books.author_id = authors.id \
WHERE ({searchBy} = :searchFor) OR ({searchBy} LIKE :searchFor%)",
{"searchFor": searchFor}).fetchall()
然而,当:searchFor
被其相应的值替换时,它在非介子之间输出。你知道吗
...(title = 'Animal Farm') OR (title LIKE 'Animal Farm'%)
导致此错误的原因
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near ")"
LINE 1: ... WHERE (title = 'Love') OR (title LIKE 'Love'%)
^
有谁能帮助我理解为什么会发生这种情况,以及如何正确地做到这一点?你知道吗
发生这种情况的原因是它将变量作为字符串传递(在本例中应该是这样)。知道了这一点,您将需要将%符号与搜索字符串连接起来。这样的方法应该有用:
相关问题 更多 >
编程相关推荐