diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-08-22 13:12:43 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-08-22 13:12:43 -0400 |
commit | 4c306818396c8cc98a16a14c5ed3361cf6ff373a (patch) | |
tree | 96033e09382d4a41f2bf2de670181892dfe213c1 /lib/sqlalchemy/testing/provision.py | |
parent | df01130bb12f789e233c79363912322463ca1591 (diff) | |
download | sqlalchemy-4c306818396c8cc98a16a14c5ed3361cf6ff373a.tar.gz |
- allow a separate template database to be used for
PG CREATE DATABASE. as nobody will connect to it that would
solve the contention issue here
Change-Id: I00a4d52091876e120faff4a8a5493c53280d96f1
Diffstat (limited to 'lib/sqlalchemy/testing/provision.py')
-rw-r--r-- | lib/sqlalchemy/testing/provision.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/sqlalchemy/testing/provision.py b/lib/sqlalchemy/testing/provision.py index 95fa2f8f7..033537156 100644 --- a/lib/sqlalchemy/testing/provision.py +++ b/lib/sqlalchemy/testing/provision.py @@ -160,23 +160,26 @@ def _sqlite_post_configure_engine(url, engine, follower_ident): @_create_db.for_db("postgresql") def _pg_create_db(cfg, eng, ident): + template_db = cfg.options.postgresql_templatedb + with eng.connect().execution_options( isolation_level="AUTOCOMMIT") as conn: try: _pg_drop_db(cfg, conn, ident) except Exception: pass - currentdb = conn.scalar("select current_database()") - for attempt in range(10): + if not template_db: + template_db = conn.scalar("select current_database()") + for attempt in range(3): try: conn.execute( - "CREATE DATABASE %s TEMPLATE %s" % (ident, currentdb)) + "CREATE DATABASE %s TEMPLATE %s" % (ident, template_db)) except exc.OperationalError as err: if "accessed by other users" in str(err): log.info( "Waiting to create %s, URI %r, " - "template DB is in use sleeping for .5", - ident, eng.url) + "template DB %s is in use sleeping for .5", + ident, eng.url, template_db) time.sleep(.5) else: break |