Python 2.5字符串格式化问题!

时间:2010-09-13 13:12:08

标签: python string-formatting

我正在尝试使用python 2.5字符串格式,但是我在以下示例中遇到了问题:

values = {
          'url': 'http://blabla.com',
          'link' : 'http://blabla.com',
          'username' : 'user',
          'spot'    : 0,
          'views'    : 10,
          'date'    : 3232312,
          'private' : 1, 

          }

query = """insert into hyves.Image (URL, StaticLink , HostUsername, SpotCount, ViewCount, UploadDate) values ('%(url)','%(link)','%(username)',%(spot),%(views),%(date), %(private) )""" % values

print query

它给出了以下错误:ValueError:索引106处不支持的格式字符'''(0x27)。 任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:9)

永远不要使用字符串格式来编写像这样的SQL查询!使用您的数据库模块进行插值 - 它将通过正确的转义执行此操作,因此不会发生这种情况:http://xkcd.com/327/

如果您想将该格式用于sql之外的其他内容,请使用%(foo)s(或d或您需要的任何格式。)

答案 1 :(得分:3)

您缺少格式字符,即:

"INSERT INTO ... %(url)s, ..." % values

...如果您想将URL格式化为字符串。

答案 2 :(得分:3)

您需要指定explicit conversion标志:

query = """insert into hyves.Image (URL, StaticLink , HostUsername, SpotCount, ViewCount, UploadDate) values (%(url)s,%(link)s,%(username)s,%(spot)i,%(views)i,%(date)i, %(private)i )""" % values