Python MySQLDB executemany()在mac上工作,在linux上什么也不做

Python MySQLDB executemany()在mac上工作,在linux上什么也不做,python,mysql,linux,macos,Python,Mysql,Linux,Macos,我以这种方式运行了许多SQL脚本: 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上就像一个魔咒,但在Linu

我以这种方式运行了许多SQL脚本:

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语句,但在存储过程定义中更改的分隔符上可能会失败(无论如何都会在分隔符行周围报告SQL错误)

以前有没有人遇到过类似的事情? 是否有人在Linux上成功使用了
executemany()

版本:

  • Mac OS X 10.6.4
  • mysql版本14.14发行版5.1.39,适用于apple-darwin9.5.0(i386),使用readline 5.1
  • MySQL_python-1.2.3-py2.6-macosx-10.6-universal

  • 库本图10.10

  • mysql版本14.14发行版5.1.49,适用于使用readline 6.1的debian linux gnu(i686)
  • MySQL_python-1.2.3-py2.6-linux-i686 (默认的Kubuntu包是1.2.2,所以我手动升级)

(由于某些原因,Kubuntu 10.10之后有一个额外的空行我似乎无法摆脱,可能是堆栈溢出错误…

检查您是否正确升级到1.2.3。。。我记得读到过,1.2.2有一个bug导致了executemany出现问题。

我使用
executemany()
,但使用的是一条应用于许多值的SQL语句(如
INSERT
)。我不知道您的
script\u文本中有什么变量。我一直在linux系统上使用1.2.2,没有任何问题。在linux系统上使用1.2.2上的
executemany
一点问题都没有。一直在使用它。@danosure:使用executemany尝试使用一些mysql函数插入…->