为什么使用MySQLdb时'insert'函数不添加行?

8 投票
1 回答
9599 浏览
提问于 2025-04-17 12:29

我正在尝试弄明白如何在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(),否则更改可能会丢失。”

撰写回答