Jacob George
Jacob George

Reputation: 2627

sqlalchemy raw sql query limit using connection.execute()

This python code should run statements on the database, but the sql statements are not executed:

from sqlalchemy import *
sql_file = open("test.sql","r")
sql_query = sql_file.read()
sql_file.close()
engine = create_engine(
    'postgresql+psycopg2://user:password@localhost/test', echo=False)

conn = engine.connect()
print sql_query
result = conn.execute(sql_query)
conn.close()

The test.sql file contains SQL statements which create 89 tables.

The tables are not created if I specify 89 tables, but if I reduce the number of tables to 2 to it works.

Is there a limit on the number of queries that can be executed within the conn.execute? How do a run any number of raw queries like this?

Upvotes: 8

Views: 10722

Answers (2)

Serpens
Serpens

Reputation: 838

Why do you use raw SQL with SQLAlchemy? If you have no good reason for that, you should use other methods:

http://docs.sqlalchemy.org/en/rel_0_7/orm/tutorial.html

http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#metadata-describing

Upvotes: -1

Antonio Beamud
Antonio Beamud

Reputation: 2341

Perhaps, forcing the autocommit:

conn.execute(RAW_SQL).execution_options(autocommit=True))

Other approach is using transactions and doing the commit:

t = conn.begin()
try:
    conn.execute(RAW_SQL)
    t.commit()
except:
    t.rollback()

PD: You can put the execution_options in the create_engine parameters too.

Upvotes: 8

Related Questions