Hi Michael and Simon - Thank you for your responses and help. Sorry I should have provided more details.
Putting in the raise gave this error trace blow. It says it cannot execute more than one line at a time. It says the same even if I do not have it in a transaction block, but in this case I do. Meaning if just do a: conn.execute(scriptFile) - it says cannot execute more than 1 statement at a time, which is the same error I am getting with the transaction. ... In this case I do a try catch as in: conn = engine.connect() transact = conn.begin() try: conn.execute(scriptFile) transact.commit() except: raise transact.rollback() With scriptFile being just a string with 4 CREATE TABLE statements with 3 - 10 fields each. The scriptFile does have '/n' and '/t' (newlines/tabs) in each line of fields in the CREATE TABLE statements. And as I said before I can execute the same statements (with the /n and /t) 1 at a time with either the sqlalchemy or sqlite3 drivers, no problem. Eventually I do want to run these in PostgresSQL so I assume it is not a SQLite3 issue. I do need to run on SQLite3 as well. Btw, in my use case, while I can run the CREATE TABLEs 1 at a time eventually I do have to run CREATE INDEXES / FKs / INITIAL DATA LOAD multiple at a time, so I would like to get the multiple statements working right. ... This is the error raise generates - at the end it says it can only execute 1 statement at a time but it s warning. 2013-09-21 10:47:35,543 INFO sqlalchemy.engine.base.Engine BEGIN (implicit) 2013-09-21 10:47:35,543 INFO sqlalchemy.engine.base.Engine ... then shows the CREATE TABLE statements ... 2013-09-21 10:47:35,543 INFO sqlalchemy.engine.base.Engine () Traceback (most recent call last): File "dbms.model/python3/Controller.py", line 54, in <module> if __name__ == "__main__": main() File "dbms.model/python3/Controller.py", line 50, in main controller.initiateEnvironment() ... lines from traceback in my code ... end of traceback from SQLAlchemy driver below ... File "/space/development/python/dbms.model/python3/DBMS/ExecutorSQL.py", line 47, in executeCreateOnSQLite2 conn.execute(scriptFile) File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/base.py", line 805, in _execute_text statement, parameters File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context context) File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/base.py", line 1027, in _handle_dbapi_exception util.reraise(*exc_info) File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/util/compat.py", line 183, in reraise raise value File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context context) File "/usr/local/lib/python3.3/dist-packages/sqlalchemy/engine/default.py", line 326, in do_execute cursor.execute(statement, parameters) sqlite3.Warning: You can only execute one statement at a time. ... Hope this helps. Please let me know if you need anything else. Thank you again for all your help. Mono On Friday, September 20, 2013 7:07:57 PM UTC-4, Simon King wrote: > > > On 20 Sep 2013, at 08:15, monosij...@gmail.com <javascript:> wrote: > > > > > I am trying to create multiple tables from a set of 'create table' > scripts.The set of scripts are in a list and I am executing as below. > > > > The scripts create tables, all scripts tested and work through the > sqlite3 driver fine - one at a time. > > > > However, through the sqlarchemy driver when I try as below - only a few > of the tables get created, ie the script gets executed. > > > > The scripts (for the tables) always come in the same order but randomly > a few gets executed, somes 1st,2nd or 1st,3rd; etc. > > > > The same scripts iterated from the same list get created fine using > sqlite3 driver as mentioned, with no issues. > > > > However only a few of the tables get when I try the following, and then > there is an error which causes the rollback from the script that failed and > it exits. > > > > Any suggestions will be very appreciated as I actually plan to use the > scripts for Postgres eventually. > > > > Btw I also try executing them all together by trying to execute the list > - that also failed. Eventually i would like to try and bulk execute if > possible, but not urgent for 'create table' > > > > Thank you for your help. > > > > Mono > > > > ... > > dbms = 'sqlite:////dataSpace/sqlite3/test.sqlite3' > > engine = create_engine(dbms, echo = True) > > t = conn.begin() > > try: > > for script in scripts: > > print (script) > > conn.execute(script) # I tried executing scripts all together > as well but failed. > > t.commit() # I tried commit outside the for as well > > executed = True > > except: > > t.rollback() > > … > > > > If your script really looks like this, then you are suppressing any error > messages that might be happening during the import with your "except" > clause. Trying putting a bare "raise" after the t.rollback() so that your > script aborts after an exception. > > Simon > > -- 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 http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.