_mysql模块封装了与Mysql C API相对应的功能,MySQLdb又在_mysql的基础上进行了封装,为的是与Python DB API兼容(不清楚python的DB API标准是怎么样的,刚学python)。
在两者的文档中,都建议尽量使用MySQLdb。
直接上代码:
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb if __name__ == '__main__':
#sql = 'insert into table_test values(...)' conn = MySQLdb.connect(user='user', host='ip_addr', passwd='password',db='test') cur = conn.cursor() #cur.executemany(sql, params) cur.execute(sql) conn.commit() #记得提交,否则如果上述语句是更新语句,比如insert,只会在本地进行,服务器端不会得到更新 cur.close() conn.close()
有些网上的示例程序中并没有提到要执行conn.commit()
我实验的过程中发现,这句话是必要的,否则插入语句只是在本地进行,并没有更新到数据库
实验平台:python 2.4.3,[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2,
mysql:5.5.24-0ubuntu0.12.04.1 (Ubuntu)
因为上述问题,纠结了很久,因为是在百度搜索中找到的示例程序,排名很靠前,就没有怀疑什么,以为是python模块的bug
后来读了MySQLdb和_mysql模块的文档,结合测试程序中出现的现象,想到有可能是没有提交的原因。
因为过程中很纠结,所以记录一下