[英]When using .format for psycopg2 it reads it as a column name but no issue using %
當使用帶有psycopg2的python 3的.format時
WHERE
US.UserId = UP.UserId AND
UP.country = {2}
AND UP.state= {3}
AND UP.city= {4}
它抱怨說例如UP.country中的“ RSA”列不存在。 如果我像在python 2中那樣使用%s,我不會遇到相同的問題,並且不會將其作為一列讀取。
我在這里想念什么?
謝謝,
我注意到內部工作原理可以肯定,但是請在周圍加上“ {}”為我解決了此問題。
將%s
用於帶有psycopg2的可變占位符。
確保正確傳遞參數,以便正確地對它們進行轉義。
>>> cur.execute("INSERT INTO foo VALUES (%s)", ("bar",)) # correct
如果將%formatting或format()
與用戶輸入一起使用,則容易受到SQL注入的攻擊。
>>> cur.execute("INSERT INTO foo VALUES (%s)" % "bar", ()) # wrong
>>> cur.execute("INSERT INTO foo VALUES ({} )".format("bar"), ()) # wrong
有關更多信息,請參閱有關將參數傳遞給SQL查詢的文檔。
請注意,Python 3中的常規字符串以及format()
支持%s
格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.