我导入了MySQLdb,并建立了数据库连接。
我有两个列表如下:
var_list = ['INFY','WIPR','SUZY','BEL' .....]
var_list2 = ['infosys', 'wipro', 'suzlon', 'bharat electronics', .....]
我的目标是插入数据库。因此我写了以下两个字符串:
var_string = ', '.join('?' * len(varlist))
var_string2 = ','.join('?' * len(varlist2))
现在我尝试将值插入到MySQL表中,该表包含以下列:symbol(varchar)
和company(varchar)
。
query_string = 'INSERT INTO table VALUES (%s, %s);' %(var_string,var_string2)
cur.execute(query_string, (varlist,varlist2))
然而,这不起作用。
答案 0 :(得分:1)
根据您的问题,我认为您的目标是进行批量插入。您可以按照以下方式修改代码,但我强烈建议不要:
query_string = 'INSERT INTO table VALUES %s;'%(','.join('(%s,%s)'*len(varlist)))
flatten = tuple(x for xs in zip(varlist,varlist2) for x in xs)
cur.execute(query_string,flatten)
在这里,您将生成一个query_string
,如下所示:
INSERT INTO table VALUES (%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s);
然后用元组('INFY','infosys','WIPR','wipro',...)
您可以更好地使用.executemany()
:
cur.executemany("INSERT INTO table VALUES (%s,%s);",zip(var_list,var_list2))
这将生成更长的查询,但结果更优雅,更安全。