psycopg2 Python 在字段 postgresql 中连接百分比“%”
psycopg2 Python concatenate percentage '%' in field postgresql
这是一个非常具体的问题,但我是 运行 通过 Python 使用 psycopg2 运行 Postgresql 查询的自动化脚本。 returns 百分比字段之一,但我不想将它们显示为整数,而是想在每个数字后添加一个百分比。例如,我的查询中有这一行:
CASE WHEN (delivered_orders != 0) then round((scanned_deliveries::numeric
/ delivered_orders::numeric)*100) when delivered_orders = 0 then 0 end as
scan_percent
因此,如果有 4 个订单并且扫描了 3 个,它将 return 75。我希望它达到 return 75%。我试过将它与 || 连接起来'%' 和 || % 在 "end" 之后,但 Python 将百分比视为占位符,它说 Tuples out of range 因为我没有足够的值。我也尝试过将它用作占位符,然后在 cursor.execute(query, ('%')) 时放置 '%' 但它说:
ValueError: 不支持的格式字符
我也尝试了一些其他的东西。我在这里用头撞墙,认为你们这些聪明人可能知道我需要做什么。感谢您的帮助!
将 %%
用于文字 %
。来自 Psycopg docs:
When parameters are used, in order to include a literal %
in the query
you can use the %%
string:
>>> cur.execute("SELECT (%s % 2) = 0 AS even", (10,)) # WRONG
>>> cur.execute("SELECT (%s %% 2) = 0 AS even", (10,)) # correct
这是一个非常具体的问题,但我是 运行 通过 Python 使用 psycopg2 运行 Postgresql 查询的自动化脚本。 returns 百分比字段之一,但我不想将它们显示为整数,而是想在每个数字后添加一个百分比。例如,我的查询中有这一行:
CASE WHEN (delivered_orders != 0) then round((scanned_deliveries::numeric
/ delivered_orders::numeric)*100) when delivered_orders = 0 then 0 end as
scan_percent
因此,如果有 4 个订单并且扫描了 3 个,它将 return 75。我希望它达到 return 75%。我试过将它与 || 连接起来'%' 和 || % 在 "end" 之后,但 Python 将百分比视为占位符,它说 Tuples out of range 因为我没有足够的值。我也尝试过将它用作占位符,然后在 cursor.execute(query, ('%')) 时放置 '%' 但它说:
ValueError: 不支持的格式字符
我也尝试了一些其他的东西。我在这里用头撞墙,认为你们这些聪明人可能知道我需要做什么。感谢您的帮助!
将 %%
用于文字 %
。来自 Psycopg docs:
When parameters are used, in order to include a literal
%
in the query you can use the%%
string:>>> cur.execute("SELECT (%s % 2) = 0 AS even", (10,)) # WRONG >>> cur.execute("SELECT (%s %% 2) = 0 AS even", (10,)) # correct