Postgresql和python中LIKE运算符的占位符

时间:2019-06-04 01:02:32

标签: python postgresql

不确定如何消除类型错误而不损害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 %%']

1 个答案:

答案 0 :(得分:0)

您可以像这样将%连接起来: db.execute("SELECT * FROM books WHERE isbn LIKE '%%' || %(isbn)s || '%%', {"isbn":str(isbn)})

请注意,至少在psycopg2中,使用命名参数时使用%%代替%。