pg8000.core.ProgrammingError: 'could not determine data type of parameter $2'
pg8000.core.ProgrammingError: 'could not determine data type of parameter $2'
我正在使用 pg.8000 (Postgres) 并尝试 运行 以下 SELECT
查询
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
member_username
)
其中 member.username
是一个字符串。
但是我收到以下错误。
pg8000.core.ProgrammingError: ('ERROR', 'ERROR', '42P18', 'could not determine data type of parameter ', 'postgres.c', '1350', 'exec_parse_message', '', '')
但是,当我 运行 使用 GUI 工具进行相同的查询时,一切 运行 都很好,我得到了结果。有什么问题?
你传错了参数,你应该给一个元组,一个列表或者一个字典
元组示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
(member_username,)
)
带有列表的示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
[member_username]
)
字典示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %(mname)s
""",
{'mname' : member_username}
)
我正在使用 pg.8000 (Postgres) 并尝试 运行 以下 SELECT
查询
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
member_username
)
其中 member.username
是一个字符串。
但是我收到以下错误。
pg8000.core.ProgrammingError: ('ERROR', 'ERROR', '42P18', 'could not determine data type of parameter ', 'postgres.c', '1350', 'exec_parse_message', '', '')
但是,当我 运行 使用 GUI 工具进行相同的查询时,一切 运行 都很好,我得到了结果。有什么问题?
你传错了参数,你应该给一个元组,一个列表或者一个字典
元组示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
(member_username,)
)
带有列表的示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %s
""",
[member_username]
)
字典示例:
cursor.execute(
"""
SELECT orders.name, orders.order_price, orders.selling_price, orders.earnings
FROM member, orders
WHERE member.id=orders.member_id
AND member.name = %(mname)s
""",
{'mname' : member_username}
)