Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用MySQLdb格式化多个字符串(%s)?_Python_Mysql_Mysql Python - Fatal编程技术网

Python 如何使用MySQLdb格式化多个字符串(%s)?

Python 如何使用MySQLdb格式化多个字符串(%s)?,python,mysql,mysql-python,Python,Mysql,Mysql Python,我正在尝试使用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 co

我正在尝试使用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['profileIconId'、'CallersLevel'、'revisionDate'、'id'、'name',627、30、1398707724000、60783、u'Theodone']

TypeError:格式字符串的参数不足


如何使用两个%s获取SQL安全转义字符串?我也希望有更好的方法来实现这一点。

因为您需要动态插入列名,所以适合您的解决方案-将参数化查询与MySQLdb.escape\u string结合使用:

q = "INSERT IGNORE INTO summoners({0},{1},{2},{3},{4}) VALUES (%s,%s,%s,%s,%s)".format(*c)
query =  MySQLdb.escape_string(q)
cursor.execute(query, v)

参数化查询不能替代元数据中的查询。要高效地将两个列表转义到MySQLdb execute命令中,最好的方法是什么?