Fix "AttributeError: 'NoneType' object has no attribute 'info'", when using polymorphic models. (#651)
Released on October 11, 2017
- Don't mask the parent table for single-table inheritance models. (#561)
Released on October 5, 2017
- If a model has a table name that matches an existing table in the metadata, use that table. Fixes a regression where reflected tables were not picked up by models. (#551)
- Raise the correct error when a model has a table name but no primary key. (#556)
- Fix
repr
on models that don't have an identity because they have not been flushed yet. (#555) - Allow specifying a
max_per_page
limit for pagination, to avoid users specifying high values in the request args. (#542) - For
paginate
witherror_out=False
, the minimum value forpage
is 1 andper_page
is 0. (#558)
Released on September 28, 2017
- Multiple bugs with
__tablename__
generation are fixed. Names will be generated for models that define a primary key, but not for single-table inheritance subclasses. Names will not override adeclared_attr
.PrimaryKeyConstraint
is detected. (#541) - Passing an existing
declarative_base()
asmodel_class
toSQLAlchemy.__init__
will use this as the base class instead of creating one. This allows customizing the metaclass used to construct the base. (#546) - The undocumented
DeclarativeMeta
internals that the extension uses for binds and table name generation have been refactored to work as mixins. Documentation is added about how to create a custom metaclass that does not do table name generation. (#546) - Model and metaclass code has been moved to a new
models
module._BoundDeclarativeMeta
is renamed toDefaultMeta
; the old name will be removed in 3.0. (#546) - Models have a default
repr
that shows the model name and primary key. (#530) - Fixed a bug where using
init_app
would cause connectors to always use thecurrent_app
rather than the app they were created for. This caused issues when multiple apps were registered with the extension. (#547)
Released on February 27, 2017, codename Dubnium
- Minimum SQLAlchemy version is 0.8 due to use of
sqlalchemy.inspect
. - Added support for custom
query_class
andmodel_class
as args to theSQLAlchemy
constructor. (#328) - Allow listening to SQLAlchemy events on
db.session
. (#364) - Allow
__bind_key__
on abstract models. (#373) - Allow
SQLALCHEMY_ECHO
to be a string. (#409) - Warn when
SQLALCHEMY_DATABASE_URI
is not set. (#443) - Don't let pagination generate invalid page numbers. (#460)
- Drop support of Flask < 0.10. This means the db session is always tied to the app context and its teardown event. (#461)
- Tablename generation logic no longer accesses class properties unless they
are
declared_attr
. (#467)
Released on October 23rd 2015, codename Caesium
- Table names are automatically generated in more cases, including subclassing mixins and abstract models.
- Allow using a custom MetaData object.
- Add support for binds parameter to session.
Released on August 29th 2014, codename Bohrium
- Changed how the builtin signals are subscribed to skip non Flask-SQLAlchemy sessions. This will also fix the attribute error about model changes not existing.
- Added a way to control how signals for model modifications are tracked.
- Made the
SignallingSession
a public interface and added a hook for customizing session creation. - If the
bind
parameter is given to the signalling session it will no longer cause an error that a parameter is given twice. - Added working table reflection support.
- Enabled autoflush by default.
- Consider
SQLALCHEMY_COMMIT_ON_TEARDOWN
harmful and remove from docs.
Released on July 20th 2013, codename Aurum
- Added Python 3.3 support.
- Dropped 2.5 compatibility.
- Various bugfixes
- Changed versioning format to do major releases for each update now.
- New distribution format (flask_sqlalchemy)
- Added support for Flask 0.9 specifics.
- Added session support for multiple databases
- Make relative sqlite paths relative to the application root.
- Fixed an issue with Flask-SQLAlchemy not selecting the correct binds.
- Added support for multiple databases.
- Expose Flask-SQLAlchemy's BaseQuery as db.Query.
- Set default query_class for db.relation, db.relationship, and db.dynamic_loader to Flask-SQLAlchemy's BaseQuery.
- Improved compatibility with Flask 0.7.
- Fixed a bug introduced in 0.10 with alternative table constructors.
- Added support for signals.
- Table names are now automatically set from the class name unless overriden.
- Model.query now always works for applications directly passed to the SQLAlchemy constructor. Furthermore the property now raises an RuntimeError instead of being None.
- added session options to constructor.
- fixed a broken __repr__
- db.Table is now a factor function that creates table objects. This makes it possible to omit the metadata.
- applied changes to pass the Flask extension approval process.
- added a few configuration keys for creating connections.
- automatically activate connection recycling for MySQL connections.
- added support for the Flask testing mode.
- Initial public release