1Version 2.5.1 2------------- 3 4Released 2021-03-18 5 6- Fix compatibility with Python 2.7. 7 8 9Version 2.5.0 10------------- 11 12Released 2021-03-18 13 14- Update to support SQLAlchemy 1.4. 15- SQLAlchemy ``URL`` objects are immutable. Some internal methods have 16 changed to return a new URL instead of ``None``. :issue:`885` 17 18 19Version 2.4.4 20------------- 21 22Released 2020-07-14 23 24- Change base class of meta mixins to ``type``. This fixes an issue 25 caused by a regression in CPython 3.8.4. :issue:`852` 26 27 28Version 2.4.3 29------------- 30 31Released 2020-05-26 32 33- Deprecate ``SQLALCHEMY_COMMIT_ON_TEARDOWN`` as it can cause various 34 design issues that are difficult to debug. Call 35 ``db.session.commit()`` directly instead. :issue:`216` 36 37 38Version 2.4.2 39------------- 40 41Released 2020-05-25 42 43- Fix bad pagination when records are de-duped. :pr:`812` 44 45 46Version 2.4.1 47------------- 48 49Released 2019-09-24 50 51- Fix ``AttributeError`` when using multiple binds with polymorphic 52 models. :pr:`651` 53 54 55Version 2.4.0 56------------- 57 58Released 2019-04-24 59 60- Make engine configuration more flexible. (:pr:`684`) 61- Address SQLAlchemy 1.3 deprecations. (:pr:`684`) 62- ``get_or_404()`` and ``first_or_404()`` now accept a ``description`` 63 parameter to control the 404 message. (:issue:`636`) 64- Use ``time.perf_counter`` for Python 3 on Windows. (:issue:`638`) 65- Drop support for Python 2.6 and 3.3. (:pr:`687`) 66- Add an example of Flask's tutorial project, Flaskr, adapted for 67 Flask-SQLAlchemy. (:pr:`720`) 68 69 70Version 2.3.2 71------------- 72 73Released 2017-10-11 74 75- Don't mask the parent table for single-table inheritance models. 76 (:pr:`561`) 77 78 79Version 2.3.1 80------------- 81 82Released 2017-10-05 83 84- If a model has a table name that matches an existing table in the 85 metadata, use that table. Fixes a regression where reflected tables 86 were not picked up by models. (:issue:`551`) 87- Raise the correct error when a model has a table name but no primary 88 key. (:pr:`556`) 89- Fix ``repr`` on models that don't have an identity because they have 90 not been flushed yet. (:issue:`555`) 91- Allow specifying a ``max_per_page`` limit for pagination, to avoid 92 users specifying high values in the request args. (:pr:`542`) 93- For ``paginate`` with ``error_out=False``, the minimum value for 94 ``page`` is 1 and ``per_page`` is 0. (:issue:`558`) 95 96 97Version 2.3.0 98------------- 99 100Released 2017-09-28 101 102- Multiple bugs with ``__tablename__`` generation are fixed. Names 103 will be generated for models that define a primary key, but not for 104 single-table inheritance subclasses. Names will not override a 105 ``declared_attr``. ``PrimaryKeyConstraint`` is detected. 106 (:pr:`541`) 107- Passing an existing ``declarative_base()`` as ``model_class`` to 108 ``SQLAlchemy.__init__`` will use this as the base class instead of 109 creating one. This allows customizing the metaclass used to 110 construct the base. (:issue:`546`) 111- The undocumented ``DeclarativeMeta`` internals that the extension 112 uses for binds and table name generation have been refactored to 113 work as mixins. Documentation is added about how to create a custom 114 metaclass that does not do table name generation. (:issue:`546`) 115- Model and metaclass code has been moved to a new ``models`` module. 116 ``_BoundDeclarativeMeta`` is renamed to ``DefaultMeta``; the old 117 name will be removed in 3.0. (:issue:`546`) 118- Models have a default ``repr`` that shows the model name and primary 119 key. (:pr:`530`) 120- Fixed a bug where using ``init_app`` would cause connectors to 121 always use the ``current_app`` rather than the app they were created 122 for. This caused issues when multiple apps were registered with the 123 extension. (:pr:`547`) 124 125 126Version 2.2 127----------- 128 129Released 2017-02-27, codename Dubnium 130 131- Minimum SQLAlchemy version is 0.8 due to use of 132 ``sqlalchemy.inspect``. 133- Added support for custom ``query_class`` and ``model_class`` as args 134 to the ``SQLAlchemy`` constructor. (:pr:`328`) 135- Allow listening to SQLAlchemy events on ``db.session``. 136 (:pr:`364`) 137- Allow ``__bind_key__`` on abstract models. (:pr:`373`) 138- Allow ``SQLALCHEMY_ECHO`` to be a string. (:issue:`409`) 139- Warn when ``SQLALCHEMY_DATABASE_URI`` is not set. (:pr:`443`) 140- Don't let pagination generate invalid page numbers. (:issue:`460`) 141- Drop support of Flask < 0.10. This means the db session is always 142 tied to the app context and its teardown event. (:issue:`461`) 143- Tablename generation logic no longer accesses class properties 144 unless they are ``declared_attr``. (:issue:`467`) 145 146 147Version 2.1 148----------- 149 150Released 2015-10-23, codename Caesium 151 152- Table names are automatically generated in more cases, including 153 subclassing mixins and abstract models. 154- Allow using a custom MetaData object. 155- Add support for binds parameter to session. 156 157 158Version 2.0 159----------- 160 161Released 2014-08-29, codename Bohrium 162 163- Changed how the builtin signals are subscribed to skip 164 non-Flask-SQLAlchemy sessions. This will also fix the attribute 165 error about model changes not existing. 166- Added a way to control how signals for model modifications are 167 tracked. 168- Made the ``SignallingSession`` a public interface and added a hook 169 for customizing session creation. 170- If the ``bind`` parameter is given to the signalling session it will 171 no longer cause an error that a parameter is given twice. 172- Added working table reflection support. 173- Enabled autoflush by default. 174- Consider ``SQLALCHEMY_COMMIT_ON_TEARDOWN`` harmful and remove from 175 docs. 176 177 178Version 1.0 179----------- 180 181Released 2013-07-20, codename Aurum 182 183- Added Python 3.3 support. 184- Dropped 2.5 compatibility. 185- Various bugfixes 186- Changed versioning format to do major releases for each update now. 187 188 189Version 0.16 190------------ 191 192- New distribution format (flask_sqlalchemy) 193- Added support for Flask 0.9 specifics. 194 195 196Version 0.15 197------------ 198 199- Added session support for multiple databases. 200 201 202Version 0.14 203------------ 204 205- Make relative sqlite paths relative to the application root. 206 207 208Version 0.13 209------------ 210 211- Fixed an issue with Flask-SQLAlchemy not selecting the correct 212 binds. 213 214 215Version 0.12 216------------ 217 218- Added support for multiple databases. 219- Expose ``BaseQuery`` as ``db.Query``. 220- Set default ``query_class`` for ``db.relation``, 221 ``db.relationship``, and ``db.dynamic_loader`` to ``BaseQuery``. 222- Improved compatibility with Flask 0.7. 223 224 225Version 0.11 226------------ 227 228- Fixed a bug introduced in 0.10 with alternative table constructors. 229 230 231Version 0.10 232------------ 233 234- Added support for signals. 235- Table names are now automatically set from the class name unless 236 overridden. 237- ``Model.query`` now always works for applications directly passed to 238 the ``SQLAlchemy`` constructor. Furthermore the property now raises 239 a ``RuntimeError`` instead of being ``None``. 240- Added session options to constructor. 241- Fixed a broken ``__repr__``. 242- ``db.Table`` is now a factory function that creates table objects. 243 This makes it possible to omit the metadata. 244 245 246Version 0.9 247----------- 248 249- Applied changes to pass the Flask extension approval process. 250 251 252Version 0.8 253----------- 254 255- Added a few configuration keys for creating connections. 256- Automatically activate connection recycling for MySQL connections. 257- Added support for the Flask testing mode. 258 259 260Version 0.7 261----------- 262 263- Initial public release 264