无法通过MySQLdb在Python脚本中执行INSERT语句
我正在尝试通过一个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 个回答
6
你需要提交:
conn.commit()
http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away
13
你要么需要设置 conn.autocommit()
,要么需要执行 conn.commit()
- 具体可以查看 常见问题解答