2013-11-05 29 views
5

私は、create function文を含むDDLオブジェクト(create_function_foo)を持っています。それの最初の行で、私はDROP FUNCTION IF EXISTS foo;が、engine.execute(create_function_foo)リターンを置く:sqlalchemyによる実行中に複数の文を実行できるようにする

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

私はcreate_engineengine.execute_optionsengine.executeのためのパラメータとしてmulti=Trueを置くが、それは動作しません。

:私の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 
""") 

私がすべきを使用しています:enginecreate_engine

NOTEの私のインスタンスであればそれを置く?

答えて

7

multi=Trueは、MySqlコネクタの要件です。このフラグをSQLAlchemyメソッドに渡すことはできません。これを行う:

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

さらに詳しい情報:http://www.mail-archive.com/[email protected]/msg30129.html

関連する問題