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

2024-04-16 21:45:36 发布

您现在位置: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 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'、'callierlevel'、'revisionDate'、'id'、'name',627、30、1398707724000、60783,u'theodone']

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

如何使用这两个%s获取SQL安全转义字符串?我也很乐意找到更好的方法。你知道吗


Tags: 字符串代码nameidsqlmysqlconvs
1条回答
网友
1楼 · 发布于 2024-04-16 21:45:36

由于需要动态插入列名,因此适合您的解决方案是将参数化查询与MySQLdb.escape_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)

相关问题 更多 >