Thanks Mike. I've split it like this and it worked :
nengine = create_engine('mysql+mysqldb://root:1122@localhost/DB' , echo = True) auto_incr = text("""ALTER TABLE `table1` ... ; ALTER TABLE ... ; """ ) nengine.connect().execute(auto_incr) nengine2 = create_engine('mysql+mysqldb://root:1122@localhost/DB' , echo = True) auto_incr2 = text("""ALTER TABLE `table2`... ; ALTER TABLE ... ;""" ) nengine2.connect().execute(auto_incr2) So, it works for multi-line query but partially. I have to do the same for many tables, so I thought python has something more handy to offer :) On Thursday, 9 February 2017 20:37:00 UTC+1, Mike Bayer wrote: > > the most likely cause is the bundling of multiple statements into a > single execution with the semicolon. This is not a use that's normally > supported by the drivers. Use two separate text() / execute() statements. > > > > > On 02/09/2017 02:25 PM, Marios Argyriou wrote: > > Hi all, > > > > I'm building a python (ver:2.7) app with MySQL as the backend db and > > sqlalchemy as the handler. I'm new to sqlalchemy module. > > > > I'm trying to execute raw SQL code through my python. The reason is I > > want to change the `id` of a table, which is not the primary key, to be > > auto_incremented; a thing that is not supported for MySQL through > > sqlalchemy . > > The code looks like this : > > > > #creation of 2 tables, Applications and Api_Calls > > metadata = MetaData(bind=self.engine) > > self.app_table = self.Applications() > > self.apicall_table = self.Api_Calls() > > self.base.metadata.create_all(self.engine) > > #the problematic part > > auto_incr = text("""ALTER TABLE `table`.`Applications` DROP PRIMARY KEY, > > ADD UNIQUE KEY(id); > > ALTER TABLE `Applications` ADD PRIMARY KEY(md5); """ ) > > nengine = create_engine('mysql+mysqldb://root:1122@localhost/Database' , > > echo = True) > > self.engine = nengine > > self.engine.execute(auto_incr) > > > > Some clarification : i'm creating a new engine 'nengine' cause the > > previous one is created before the creatin of 'Database' schema. Then > > the new engine is assigned to 'self.engine'. The weird thing is that > > when I run the application for the first time, I get no errors. When I > > issue a DROP DATABASE and restart the application , I get the 2014 > > error. My python app doesn't support threads .Moreover, I want to > > execute the SQL query for multiple tables , which will look smthng like > : > > > > with self.engine.connect() as con: > > for line in data: > > text("""ALTER TABLE `%s` DROP PRIMARY KEY, ADD UNIQUE KEY(%s); > > TABLE `Applications` ADD PRIMARY KEY(%s); """ %(line['table'] , > > line['id'], line['key'])) > > con.execute(auto_incr) > > > > As i've understand be searching for this issue, there is a problem in > > concurrency and it's SQL fault. > > How should I deal with the error ? > > I've already searched the group but didn't find a suitable answer. > > > > -- > > SQLAlchemy - > > The Python SQL Toolkit and Object Relational Mapper > > > > http://www.sqlalchemy.org/ > > > > To post example code, please provide an MCVE: Minimal, Complete, and > > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > > description. > > --- > > You received this message because you are subscribed to the Google > > Groups "sqlalchemy" group. > > To unsubscribe from this group and stop receiving emails from it, send > > an email to sqlalchemy+...@googlegroups.com <javascript:> > > <mailto:sqlalchemy+unsubscr...@googlegroups.com <javascript:>>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:> > > <mailto:sqlal...@googlegroups.com <javascript:>>. > > Visit this group at https://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.