創建功能我如何定義使用python中MySQLdb的LIB多語句函數或過程?通過MySQLdb的
例子:
import MySQLdb
db = MySQLdb.connect(db='service')
c = db.cursor()
c.execute("""DELIMITER //
CREATE FUNCTION trivial_func (radius float)
RETURNS FLOAT
BEGIN
IF radius > 1 THEN
RETURN 0.0;
ELSE
RETURN 1.0;
END IF;
END //
DELIMITER ;""")
它創建以下回溯:
Traceback (most recent call last):
File "proof.py", line 21, in <module>
DELIMITER ;""")
File "build/bdist.macosx-10.5-i386/egg/MySQLdb/cursors.py", line 173, in execute
File "build/bdist.macosx-10.5-i386/egg/MySQLdb/connections.py", line 35, in defaulterrorhandler
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER //\nCREATE FUNCTION trivial_func (radius float) \n RETURNS FLOAT\n\n ' at line 1")
如果我直接複製相同的SQL到MySQL殼客戶端,它按預期工作
,除非你需要。例如運行數據庫創建腳本。有沒有辦法將原始SQL傳遞給MySql? – 2012-05-15 14:50:14
@BryanHunt,你無法通過動態SQL API提交一個SQL腳本,因爲幾個命令只能由`mysql`客戶端,而不是服務器的SQL語法分析器認可。 – 2012-05-15 22:05:33