为什么我的脚本不生效,但我可以手动插入mysql?
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)
3 个回答
1
如果你发现即使提交了数据,数据还是没有被存储,那你可以看看我对这个问题的回答:pymysql callproc() 似乎影响后续的选择
这里的基本思路是用 executemany() 代替 execute() 来确保数据能够被存储。(这是针对 Python 3.2 的 pymysql 0.5 版本)
稍后我发现,真正的问题是 exit() 执行得太快,导致数据没有被存储到数据库里。
所以,最后这个问题似乎是通过以下方法解决的:
[…]
cur.execute("insert into …")
import time
time.sleep(2)
cur.close()
conn.close()
time.sleep(2)
exit()
这个方法有效!
3
你需要提交你的更改(通过输入 conn.commit()
),因为默认情况下是关闭自动提交的(这也是合理的)。
18
如果没有特别的错误信息(换句话说,看起来一切正常,但插入的数据没有保存),请确保在执行完语句后调用 commit() 方法:
conn.commit()