diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/provision.py')
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/provision.py | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/provision.py b/lib/sqlalchemy/dialects/mysql/provision.py index bf126464d..b86056da6 100644 --- a/lib/sqlalchemy/dialects/mysql/provision.py +++ b/lib/sqlalchemy/dialects/mysql/provision.py @@ -1,10 +1,33 @@ +import copy + +from ... import exc from ...testing.provision import configure_follower from ...testing.provision import create_db from ...testing.provision import drop_db +from ...testing.provision import generate_driver_url from ...testing.provision import temp_table_keyword_args -@create_db.for_db("mysql") +@generate_driver_url.for_db("mysql", "mariadb") +def generate_driver_url(url, driver): + backend = url.get_backend_name() + + if backend == "mysql": + dialect_cls = url.get_dialect() + if dialect_cls._is_mariadb_from_url(url): + backend = "mariadb" + + new_url = copy.copy(url) + new_url.drivername = "%s+%s" % (backend, driver) + try: + new_url.get_dialect() + except exc.NoSuchModuleError: + return None + else: + return new_url + + +@create_db.for_db("mysql", "mariadb") def _mysql_create_db(cfg, eng, ident): with eng.connect() as conn: try: @@ -23,13 +46,13 @@ def _mysql_create_db(cfg, eng, ident): ) -@configure_follower.for_db("mysql") +@configure_follower.for_db("mysql", "mariadb") def _mysql_configure_follower(config, ident): config.test_schema = "%s_test_schema" % ident config.test_schema_2 = "%s_test_schema_2" % ident -@drop_db.for_db("mysql") +@drop_db.for_db("mysql", "mariadb") def _mysql_drop_db(cfg, eng, ident): with eng.connect() as conn: conn.exec_driver_sql("DROP DATABASE %s_test_schema" % ident) @@ -37,6 +60,6 @@ def _mysql_drop_db(cfg, eng, ident): conn.exec_driver_sql("DROP DATABASE %s" % ident) -@temp_table_keyword_args.for_db("mysql") +@temp_table_keyword_args.for_db("mysql", "mariadb") def _mysql_temp_table_keyword_args(cfg, eng): return {"prefixes": ["TEMPORARY"]} |