Permettre l'exécution de plusieurs instructions pendant l'exécution via sqlalchemy
J'ai un DDL objet (create_function_foo
) qui contient une instruction create function. En première ligne de j'y ai mis DROP FUNCTION IF EXISTS foo;
mais engine.execute(create_function_foo)
retourne:
sqlalchemy.exc.InterfaceError: (InterfaceError) Use multi=True when executing multiple statements
J'ai mis multi=True
en tant que paramètre pour create_engine
, engine.execute_options
et engine.execute
mais ça ne fonctionne pas.
NOTE: engine
si mon exemple de create_engine
NOTE: je suis à l'aide de python 3.2 + mysql.connecteur 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
""")
Où je dois le mettre?
Vous devez vous connecter pour publier un commentaire.
multi=True
est une exigence pour MySql connector. Vous ne pouvez pas définir cet indicateur en le passant à SQLAlchemy méthodes. Ce faire:Plus d'infos ici: http://www.mail-archive.com/[email protected]/msg30129.html
Il y a certains cas où SQLAlchemy ne fournit pas de façon générique à l'accès à certains
DBAPI
fonctions, telles que de traiter avec plusieurs jeux de résultats. Dans ces cas, vous devez traiter le raw DBAPI connexion directement.De SQLAlchemy documentation:
Vous pouvez également faire la même chose à l'aide de mysql connector comme on le voit ici: