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