2010-11-17 41 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