我尝试从结果列表中迭代并尝试在表exdata中插入值,但我看起来解决方案的每个位置,但没有什么对我有用
if not result:
print 'list is empty'
else:
for i in xrange(0,len(result)):
for item in result[i].iteritems():
query="INSERT INTO exdata (cve_id,severity, published,modified) \
VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2])
cursor.execute(query)
答案 0 :(得分:0)
您必须致电commit
以实际将值插入数据库
另请注意,您的execute
位于内部循环之外,因此它只会执行上一次迭代的查询。
if not result:
print 'list is empty'
else:
for i in xrange(0,len(result)):
for item in result[i].iteritems():
query="INSERT INTO exdata (cve_id,severity, published,modified) \
VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2])
cursor.execute(query)
cursor.commit()
答案 1 :(得分:0)
我在您的代码中看到了2个问题:
1)需要在循环中执行查询
2)添加用于修复更改的提交语句
if not result:
print 'list is empty'
else:
for i in xrange(0,len(result)):
for item in result[i].iteritems():
query="INSERT INTO exdata (cve_id,severity, published,modified) \
VALUES ('%s', '%s', '%s', '%s')" % (item[i], item[1][0],item[1][1],item[1][2])
cursor.execute(query)
connection.commit()
答案 2 :(得分:0)
如果您使用MySQLdb并想要进行多行插入,
尝试使用executemany
:
import MySQLdb
db = MySQLdb.connect("myhost", "myuser", "mysecret", "mydb")
# users is a list of (userid, first_name, last_name, company)
c = db.cursor()
c.executemany("""INSERT INTO users
(userid, first_name, last_name, company)
VALUES (%s, %s, %s, %s)""", users)
db.commit()
db.close()
在MySQLdb中,它在内部转换为多行INSERT,据报道是2-3阶 幅度更快。