Làm cách nào để xác định hàm hoặc thủ tục đa tuyên bố trong việc sử dụng MySQLdb lib trong python?Tạo chức năng thông qua MySQLdb
Ví dụ:
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 ;""")
nào tạo traceback sau:
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")
Nếu tôi sao chép SQL cùng trực tiếp vào một khách hàng mysql shell, nó hoạt động như mong đợi
trừ khi bạn cần. ví dụ: chạy tập lệnh tạo cơ sở dữ liệu. là có bất kỳ cách nào để chỉ cần vượt qua SQL nguyên để MySql? –
@BryanHunt, bạn không thể gửi tập lệnh SQL tùy ý thông qua API SQL động, bởi vì một số lệnh chỉ được khách hàng 'mysql' nhận dạng chứ không phải trình phân tích cú pháp SQL máy chủ. –
Bill, cảm ơn vì đã làm rõ. B –