diff --git a/doc/build/changelog/unreleased_13/5278.rst b/doc/build/changelog/unreleased_13/5278.rst new file mode 100644 index 0000000000..aaf59ae167 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5278.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: change, firebird + :tickets: 5278 + + Adjusted dialect loading for ``firebird://`` URIs so the external + sqlalchemy-firebird dialect will be used if it has been installed, + otherwise fall back to the (now deprecated) internal Firebird dialect. diff --git a/lib/sqlalchemy/dialects/__init__.py b/lib/sqlalchemy/dialects/__init__.py index 4407ab62de..741ea06889 100644 --- a/lib/sqlalchemy/dialects/__init__.py +++ b/lib/sqlalchemy/dialects/__init__.py @@ -42,7 +42,14 @@ def _auto_fn(name): ) dialect = translated try: - module = __import__("sqlalchemy.dialects.%s" % (dialect,)).dialects + if dialect == "firebird": + try: + module = __import__("sqlalchemy_firebird") + dialect = "dialect" + except: + module = __import__("sqlalchemy.dialects.firebird").dialects + else: + module = __import__("sqlalchemy.dialects.%s" % (dialect,)).dialects except ImportError: return None