diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 2d322d4c..f8e7478d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -39,7 +39,7 @@ jobs: cache: pip cache-dependency-path: requirements*/*.txt - name: cache mypy - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache@v4 # v4.1.2 with: path: ./.mypy_cache key: mypy|${{ hashFiles('pyproject.toml') }} diff --git a/CHANGES.rst b/CHANGES.rst index 7ac59691..bee2d7db 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +Version 3.1.3 +------------- + +- Use ``SQLALCHEMY_ENGINE_OPTIONS`` as default engine options specifically when engine options is not specified in ``SQLALCHEMY_BINDS``. :issue:`1396` + + Version 3.1.2 ------------- diff --git a/src/flask_sqlalchemy/extension.py b/src/flask_sqlalchemy/extension.py index ccae54b4..05e36171 100644 --- a/src/flask_sqlalchemy/extension.py +++ b/src/flask_sqlalchemy/extension.py @@ -342,6 +342,7 @@ def init_app(self, app: Flask) -> None: engine_options[key] = self._engine_options.copy() if isinstance(value, (str, sa.engine.URL)): + engine_options[key].update(basic_engine_options) engine_options[key]["url"] = value else: engine_options[key].update(value) diff --git a/tests/test_engine.py b/tests/test_engine.py index 0e88d5e3..06e702e5 100644 --- a/tests/test_engine.py +++ b/tests/test_engine.py @@ -40,7 +40,7 @@ def test_init_engine_options(app: Flask, model_class: t.Any) -> None: app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"} db = SQLAlchemy(app, engine_options={"echo": True}, model_class=model_class) # init is default - assert db.engines["a"].echo + assert not db.engines["a"].echo # config overrides init assert not db.engine.echo