什麼,我以這種方式運行多個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錯誤...)
我使用'executemany()',但在應用於許多值的單個SQL語句(如'INSERT')上。我不知道你的'script_text'變量是什麼。我一直在使用1.2.2,在linux系統上沒有任何問題。 – Danosaure 2010-11-26 02:41:11