不确定如何消除类型错误而不损害LIKE运算符的功能-即%表示在开始,结尾或整个过程中查找字符串。
试图搜索具有380X可变字符的图书的isbns。
删除%以修复类型错误返回空列表。
isbn = request.form.get("search")
# Search the database for matching or part matching string, isbn, title, or author
book = db.execute("SELECT * FROM books WHERE isbn LIKE '%:isbn%'", {"isbn":str(isbn)}).fetchall()
预期:书籍及其专栏的列表,但出现此错误:
sqlalchemy.exc.ProgrammingError:(psycopg2.errors.SyntaxError)语法 在“ 380”处或附近出现错误:第1行:选择*从书本上喜欢的地方 '%'380'%' ^
[SQL:SELECT *从书所在的地方,例如isbn'%%%(isbn)s %%']
答案 0 :(得分:0)
您可以像这样将%连接起来:
db.execute("SELECT * FROM books WHERE isbn LIKE '%%' || %(isbn)s || '%%', {"isbn":str(isbn)})
请注意,至少在psycopg2中,使用命名参数时使用%%代替%。