- Added support for Python 3.9 and 3.10.
- Dropped support for Python 3.4, 3.5 and 3.6.
- Dropped support for SQLAlchemy 1.1 and 1.2.
- Dropped support for CrateDB < 2.0.0.
- Added support for enabling SSL using SQLAlchemy DB URI with parameter
`?ssl=true`.
- Added support for SQLAlchemy 1.4
Notes
For learning about the transition to SQLAlchemy 1.4, we recommend the
corresponding documentation [What’s New in SQLAlchemy 1.4?].
Breaking changes
Textual column expressions
SQLAlchemy 1.4 became stricter on some details. It requires to wrap [CrateDB
system columns] like `_score` in a [SQLAlchemy literal_column] type.
Before, it was possible to use a query like this:
session.query(Character.name, '_score')
It must now be written like:
session.query(Character.name, sa.literal_column('_score'))
Otherwise, SQLAlchemy will complain like:
sqlalchemy.exc.ArgumentError: Textual column expression '_score' should be
explicitly declared with text('_score'), or use column('_score') for more
specificity
[CrateDB system columns]: https://cratedb.com/docs/crate/reference/en/4.8/general/ddl/system-columns.html
[SQLAlchemy literal_column]: https://docs.sqlalchemy.org/en/14/core/sqlelement.html#sqlalchemy.sql.expression.literal_column
[What’s New in SQLAlchemy 1.4?]: https://docs.sqlalchemy.org/en/14/changelog/migration_14.html