为什么使用MySQLdb时'insert'函数不添加行?
我正在尝试弄明白如何在Python中使用MySQLdb库(对这两个东西我都只是个新手)。
我在参考这里的代码,具体是:
cursor = conn.cursor ()
cursor.execute ("DROP TABLE IF EXISTS animal")
cursor.execute ("""
CREATE TABLE animal
(
name CHAR(40),
category CHAR(40)
)
""")
cursor.execute ("""
INSERT INTO animal (name, category)
VALUES
('snake', 'reptile'),
('frog', 'amphibian'),
('tuna', 'fish'),
('racoon', 'mammal')
""")
print "Number of rows inserted: %d" % cursor.rowcount
cursor.close ()
conn.close ()
我可以修改这段代码来创建或删除表格,但我就是无法让它真正提交INSERT
操作。它返回的row.count
值是我预期的(即使我在表格中更改了值,它也会变成我想要的样子)。
每次我用PHPMyAdmin查看数据库时,都没有看到任何插入的记录。我该如何将INSERT
提交到数据库呢?
1 个回答
18
你忘记了 commit
数据更改,默认情况下自动提交是关闭的:
cursor.close ()
conn.commit ()
conn.close ()
引用了 使用 Python DB-API 编写 MySQL 脚本 的文档:
“连接对象的 commit() 方法会将当前事务中未完成的更改提交,使它们在数据库中永久生效。在 DB-API 中,连接一开始是关闭自动提交模式的,所以在断开连接之前,你必须调用 commit(),否则更改可能会丢失。”