diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/postgresql/provision.py')
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/provision.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/provision.py b/lib/sqlalchemy/dialects/postgresql/provision.py index 6c6dc4be6..eb82a411e 100644 --- a/lib/sqlalchemy/dialects/postgresql/provision.py +++ b/lib/sqlalchemy/dialects/postgresql/provision.py @@ -1,13 +1,30 @@ +import copy import time from ... import exc from ... import text from ...testing.provision import create_db from ...testing.provision import drop_db +from ...testing.provision import generate_driver_url from ...testing.provision import log from ...testing.provision import temp_table_keyword_args +@generate_driver_url.for_db("postgresql") +def generate_driver_url(url, driver): + new_url = copy.copy(url) + new_url.drivername = "postgresql+%s" % driver + if new_url.get_driver_name() == "asyncpg": + new_url.query = dict(new_url.query) + new_url.query["async_fallback"] = "true" + try: + new_url.get_dialect() + except exc.NoSuchModuleError: + return None + else: + return new_url + + @create_db.for_db("postgresql") def _pg_create_db(cfg, eng, ident): template_db = cfg.options.postgresql_templatedb |