Python 格式字符串:'Truncated incorrect DOUBLE value'

Python format strings: 'Truncated incorrect DOUBLE value'

我用sid格式化一个字符串sql(注意:sid的类型是str

sid = "34"  #type(sid) is string, like 34, 34s
sql = '''SELECT * FROM table_name WHERE sid={sid}'''.format(sid=sid)

print sql的结果是:

SELECT * FROM table_name WHERE sid=34

这出乎我的意料(34 vs "34"):

SELECT * FROM table_name WHERE sid="34"

在使用这个sql作为cur.execute(sql)的参数时,遇到如下错误,导致错误输出。

Warning: Truncated incorrect DOUBLE value: '88s'

如果您想用引号括起您的值,您可以将其添加到您的字符串中,并确保使用 \

转义您的 " 个字符
>>> 'SELECT * FROM table_name WHERE sid=\"{sid}\"'.format(sid=sid)
'SELECT * FROM table_name WHERE sid="34"'

更简洁的解决方案,使用转换标志!r:

>>> sid = "34"
>>> sql = 'SELECT * FROM table_name WHERE sid={sid!r}'.format(sid=sid)
>>> sql
"SELECT * FROM table_name WHERE sid='34'"

str.format()中有两个转换标志:

  • !s 在值
  • 上调用 str()
  • !r 调用 repr()