[英]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.