我正在尝试使用MySQLdb从Python脚本在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脚本成功插入其行的值相同。但是,运行SELECT
查询不会返回脚本中的任何行。
知道出了什么问题吗?
答案 0 :(得分:11)
您需要设置conn.autocommit()
,或者需要conn.commit()
- 请参阅the FAQ
答案 1 :(得分:5)
你需要提交:
conn.commit()
http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away