conn = MySQLdb.connect(host='db1', user='user', passwd='pass', db='db', port=3306)
cursor = conn.cursor()
count = int(sys.argv[1])
x = 0
while x < count:
x += 1
cursor.execute("INSERT INTO auth_group(name) VALUES(%s)", (str(x)))
#if I change %s to 'kkkk', it doesn't work either.
print str(x) + ' / ' + str(count)
print 'done'
然而......如果我进入“mysql -uuser -ppass db”,它可以工作:
mysql > INSERT INTO auth_group(name) VALUES('kkkkk');
我不知道这可能是个问题......但我之前遇到了复制问题。
我想将99999行插入数据库。但它是空的。
mysql> select * from auth_group;
Empty set (0.33 sec)
答案 0 :(得分:17)
如果没有特定的错误消息(换句话说,它似乎工作,但插入不粘),请确保在语句后提交():
conn.commit()
答案 1 :(得分:3)
您必须提交(通过发出conn.commit()
),因为默认情况下自动提交是关闭的(理所当然地是这样)。
答案 2 :(得分:1)
如果您的数据即使在提交后也没有存储,请查看我对此问题的回答:pymysql callproc() appears to affect subsequent selects
基本思想是使用executemany()而不是execute()来获取存储的数据。 (pymysql 0.5 for Python 3.2)。
过了一会儿,我发现实际问题是exit()执行得太快,因此,数据不会存储在数据库中。
所以,最后问题似乎已解决:
[…]
cur.execute("insert into …")
import time
time.sleep(2)
cur.close()
conn.close()
time.sleep(2)
exit()
有效!