【发布时间】:2014-04-29 01:22:48
【问题描述】:
我正在尝试使用 MySQLdb 库将多个 %s 格式化为使用此代码进行 SQL 安全插入:
v = ['profileIconId', 'summonerLevel', 'revisionDate', 'id', 'name']
v += summonerId.values()
vs = ','.join(['%s'] * len(v))
con = connect(MYSQL['HOST'], MYSQL['USER'], MYSQL['PASSWORD'], MYSQL['DB'])
with con:
cur = con.cursor()
q = 'INSERT IGNORE INTO '
q += 'summoners(%s) '
q += 'VALUES(%s)'
print vs,v
cur.execute(q % vs, v )
我收到这个输出:
%s,%s,%s,%s,%s,%s,%s,%s,%s,%s ['profileIconId', 'summonerLevel', 'revisionDate', 'id', '姓名', 627, 30, 1398707724000, 60783, u'TheOddOne']
TypeError: 格式字符串的参数不足
如何使用两个 %s 获得 SQL 安全的转义字符串?我也愿意寻求更好的方法来做到这一点。
【问题讨论】:
-
参数化查询不能替代元数据。
-
高效地将两个列表转义到 MySQLdb 执行命令中的最佳方法是什么?
标签: python mysql mysql-python