2013-11-05 11 views
5

Tôi có đối tượng DDL (create_function_foo) có chứa câu lệnh hàm tạo. Trong dòng đầu tiên của nó tôi đặt DROP FUNCTION IF EXISTS foo; nhưng engine.execute(create_function_foo) lợi nhuận:Bật thực thi nhiều câu lệnh trong khi thực hiện qua sqlalchemy

sqlalchemy.exc.InterfaceError: (InterfaceError) Use multi=True when executing multiple statements 

tôi đặt multi=True như tham số cho create_engine, engine.execute_optionsengine.execute nhưng nó không hoạt động.

LƯU Ý: engine nếu dụ của tôi về create_engine

LƯU Ý: Tôi đang sử dụng python 3.2 + mysql.connector 1.0.12 + SQLAlchemy 0.8.2

create_function_foo = DDL("""\ 
DROP FUNCTION IF EXISTS foo; 
CREATE FUNCTION `foo`(
    SID INT 
) RETURNS double 
READS SQL DATA 
BEGIN 
    ... 
END 
""") 

Nơi tôi nên đặt nó?

Trả lời

7

multi=True là yêu cầu đối với trình kết nối MySql. Bạn không thể đặt cờ này chuyển nó sang phương thức SQLAlchemy. Làm điều này:

conn = session.connection().connection 
cursor = conn.cursor() # get mysql db-api cursor 
cursor.execute(sql, multi=True) 

Thông tin thêm ở đây: http://www.mail-archive.com/[email protected]/msg30129.html

Các vấn đề liên quan