无法通过MySQLdb在Python脚本中执行INSERT语句

4 投票
2 回答
8012 浏览
提问于 2025-04-16 17:15

我正在尝试通过一个Python脚本,使用MySQLdb在MySQL表中执行一个基本的INSERT语句。我的表结构如下:

CREATE TABLE `testtable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `testfield` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
)

从MySQL命令行运行这个查询是没问题的:

INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue');

但是当我试图从Python脚本执行这个查询时,表里没有插入任何行。以下是我的代码:

conn = MySQLdb.connect(host=db_host, port=db_port, user=db_user, passwd=db_password, db=db_database)
cursor = conn.cursor ()
cursor.execute ("INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue')")
print "Number of rows inserted: %d" % cursor.rowcount
cursor.close()
conn.close()

奇怪的是,这段代码会打印出“插入的行数:1”。我还可以确认这个查询确实增加了ID字段的值,因为当我通过命令行再添加一行时,它的ID值和Python脚本成功插入的行的ID值是一样的。然而,运行SELECT查询时,脚本并没有返回任何行。

你觉得问题出在哪里呢?

2 个回答

13

你要么需要设置 conn.autocommit(),要么需要执行 conn.commit() - 具体可以查看 常见问题解答

撰写回答