带有包含 % 符号的 LIKE 子句的 psycopg2 insert 语句
psycopg2 insert statement with LIKE clause containing % sign
无法执行 psycopg2 插入查询 (Postgres db),该查询使用最佳实践 %s 符号进行插入并包含包含 % 符号的 LIKE 语句。
% sign in LIKE 语句被解释为插入占位符。
'IndexError: tuple index out of range' 被抛出。
尝试用反斜杠转义 %,没有成功。
with psycopg2.connect(some_url) as conn:
with conn.cursor() as cur:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE '%john'
"""
cur.execute(query, (tuple(["smith", "mcnamara"]),))
data = cur.fetchall()
也尝试为 LIKE
表达式使用占位符,然后将带有通配符的文字绑定到它:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE %s"""
cur.execute(query, (tuple(["smith", "mcnamara"]), "%John",))
data = cur.fetchall()
试试这个:
with psycopg2.connect(some_url) as conn:
with conn.cursor() as cur:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE '%sjohn'
"""
cur.execute(query, (tuple(["smith", "mcnamara"]), '%'))
data = cur.fetchall()
无法执行 psycopg2 插入查询 (Postgres db),该查询使用最佳实践 %s 符号进行插入并包含包含 % 符号的 LIKE 语句。
% sign in LIKE 语句被解释为插入占位符。
'IndexError: tuple index out of range' 被抛出。
尝试用反斜杠转义 %,没有成功。
with psycopg2.connect(some_url) as conn:
with conn.cursor() as cur:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE '%john'
"""
cur.execute(query, (tuple(["smith", "mcnamara"]),))
data = cur.fetchall()
也尝试为 LIKE
表达式使用占位符,然后将带有通配符的文字绑定到它:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE %s"""
cur.execute(query, (tuple(["smith", "mcnamara"]), "%John",))
data = cur.fetchall()
试试这个:
with psycopg2.connect(some_url) as conn:
with conn.cursor() as cur:
query = """
SELECT id
FROM users
WHERE surname IN %s AND named LIKE '%sjohn'
"""
cur.execute(query, (tuple(["smith", "mcnamara"]), '%'))
data = cur.fetchall()