[开发笔记]MySQL & Python经验两则

[开发笔记]MySQL & Python经验两则 - 李卫公的长安城 - 过上一万年,那城就会变成黑色,永远不倒……

在最近的开发中,遇到两个比较奇怪的问题,把解决办法写在这里:

1.使用Python操作MySQL数据库时,如果插入的数据条目很多,一条条地执行insert…into语句可能会导致connection error,正确的办法是使用executemany(这有点类似JDBC中的batch操作):
T = ((’s11′, 1), (’s21′, 2))
cursor = conn.cursor()
cursor.executemany("insert into table_a (str_column, int_column) values (%s, %d)", T)

但是,执行这段程序却会报告错误:
Type Error, expect int……
开始百思不得其解,上网搜索才发现,executemany执行的sql语句中,所有变量都必须写作%s的形式

T = ((’s11′, 1), (’s21′, 2))
cursor = conn.cursor()
cursor.executemany("insert into table_a (str_column, int_column) values (%s, %s)", T)

测试通过

2.两台环境一样的机器,一台使用MySQL 4.1.18,另一台使用MySQL 4.1.21,在4.1.18上能够正常运行的SQL语句,在4.1.21上报错:
ERROR 1030 (HY000): Got error 28 from storage engine
检查两台机器的storage engine,未发现问题;上网搜索才发现,出现此问题的原因是,临时空间不够,无法执行此SQL语句。
解决的办法是,清空/tmp目录,或者修改my.cnf中的tmpdir参数,指向具有足够空间的目录,即可。

你可能感兴趣的:(python)