我使用sql
格式化字符串sid
(注意: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'
答案 0 :(得分:5)
如果您想将值包装在引号中,可以在字符串中添加它,并确保使用"
\
个字符
>>> 'SELECT * FROM table_name WHERE sid=\"{sid}\"'.format(sid=sid)
'SELECT * FROM table_name WHERE sid="34"'
答案 1 :(得分:0)
一个更简洁的解决方案,使用转换标记 !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()