2010-11-17 51 views
0

什么,我以这种方式运行多个SQL脚本:Python的MySQLdb的executemany()的作品在Mac上,确实在Linux上

db_conn = (created earlier) 
cursor = db_conn.cursor() 

script_file = open(join(script_path, script_name)) 
script_text = script_file.read() 
script_file.close() 

num_rows = cursor.executemany(script_text, None) 

这就像在我的Mac魅力,但却未能在Linux上,executemany(...)简单什么都不做并且返回None。连接设置很好:它们在两个系统上都是相同的,我可以手动执行SQL脚本,即使用mysql命令行客户端。另外,MySQLDB.execute(...)可以使用较短的SQL语句正常工作,但可能会因存储过程定义中的更改分隔符而失败(无论如何,都会报告有关DELIMITER行的SQL错误)。

有没有人遇到过类似的东西? 是否有人在Linux上成功使用executemany()

版本:

  • 的Mac OS X 10.6.4
  • MySQL的版本14.14 DISTRIB 39年5月1日,对于使用的readline 5.1
  • MySQL_python-1.2.3苹果darwin9.5.0(I386) -py2.6-MacOSX的-10.6-万向

  • 的Kubuntu 10.10

  • MySQL的版本14.14 DISTRIB 49年5月1日,对于Debian的Linux-GNU(i686的)使用readli NE 6.1
  • MySQL_python-1.2.3-py2.6 Linux的-i686的 (默认Kubuntu的包是1.2.2,所以我手动升级)

(出于某种原因,有一个多余的空行Kubuntu 10.10后我似乎无法摆脱,可能是一个stackoverflow错误...)

+0

我使用'executemany()',但在应用于许多值的单个SQL语句(如'INSERT')上。我不知道你的'script_text'变量是什么。我一直在使用1.2.2,在linux系统上没有任何问题。 – Danosaure 2010-11-26 02:41:11

回答

0

检查您是否正确升级到1.2.3 ...我记得读了1.2.2有一个错误,导致问题与executemany。

+0

Linux上1.2.2上的'executemany'完全没问题。一直在使用它。 – Danosaure 2010-11-26 02:42:06

+0

@Danosaure:使用executemany尝试插入一些mysql函数... - > http://sourceforge.net/tracker/index.php?func=detail&aid=2137599&group_id=22307&atid=374932 – Sam 2010-11-26 03:02:59