2017-06-30 22 views
0

これは非常に具体的な質問ですが、私はpsycopg2を使用してPostgresqlクエリを実行するPythonによる自動スクリプトを実行しています。フィールドの1つはパーセンテージを返しますが、数値として表示するのではなく、各数値の後にパーセンテージを追加して表示します。例えば、私は私のクエリでこのラインを持っている:psycopg2フィールドpostgresqlのPython連結パーセント '%'

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がスキャンされているのであれば、それは私はそれが75%を返すようにしたい75を返します。私はそれを||と連結しようとしました。 '%'と|| %を "終了"の後に置きますが、Pythonはパーセントをプレースホルダとして扱い、十分な値がないのでTuplesが範囲外です。

とValueError:サポートされていない形式の文字

私はまた、「%」私はcursor.execute(クエリ、(「%」)を)やるが、それは言って置くプレースホルダとして使用し、一緒に遊んで試してみました私は他にもいくつかのことを試みました。私はここで壁に向かって頭を叩いていて、賢明な人が私が何をする必要があるか知っているかもしれないと思った。ご協力いただきありがとうございます!

+0

uglyの回避策: '... | chr(37)|| ... '(パーセント記号を引用/エスケープする必要はありません) – joop

+0

正しく覚えていれば、 '%%'のように単一の '%'をエスケープすることができます – Kendas

答えて

2

の場合は%%を使用してください。 Psycopgからdocs

When parameters are used, in order to include a literal % in the query you can use the %% string.

+0

パーフェクト!誰もが助けてくれてありがとう。皆さんはすばらしいです。 – Emac

関連する問題