github sqlalchemy/sqlalchemy rel_1_3_19


Released: August 17, 2020


  • [orm] [usecase] Adjusted the workings of the _orm.Mapper.all_orm_descriptors()
    accessor to represent the attributes in the order that they are located in
    a deterministic way, assuming the use of Python 3.6 or higher which
    maintains the sorting order of class attributes based on how they were
    declared. This sorting is not guaranteed to match the declared order of
    attributes in all cases however; see the method documentation for the exact

    References: #5494

orm declarative

  • [declarative] [orm] [usecase] The name of the virtual column used when using the
    _declarative.AbstractConcreteBase and
    _declarative.ConcreteBase classes can now be customized, to allow
    for models that have a column that is actually named type. Pull
    request courtesy Jesse-Bakker.

    References: #5513


  • [sql] [bug] Repaired an issue where the "ORDER BY" clause rendering a label name rather
    than a complete expression, which is particularly important for SQL Server,
    would fail to occur if the expression were enclosed in a parenthesized
    grouping in some cases. This case has been added to test support. The
    change additionally adjusts the "automatically add ORDER BY columns when
    DISTINCT is present" behavior of ORM query, deprecated in 1.4, to more
    accurately detect column expressions that are already present.

    References: #5470

  • [sql] [bug] [datatypes] The LookupError message will now provide the user with up to four
    possible values that a column is constrained to via the Enum.
    Values longer than 11 characters will be truncated and replaced with
    ellipses. Pull request courtesy Ramon Williams.

    References: #4733

  • [sql] [bug] Fixed issue where the
    feature would not take effect when the _schema.Sequence.next_value()
    function function for a _schema.Sequence were used in the
    _schema.Column.server_default parameter and the create table
    DDL were emitted.

    References: #5500


  • [postgresql] [bug] Fixed issue where the return type for the various RANGE comparison
    operators would itself be the same RANGE type rather than BOOLEAN, which
    would cause an undesirable result in the case that a
    TypeDecorator that defined result-processing behavior were in
    use. Pull request courtesy Jim Bosch.

    References: #5476


  • [mysql] [usecase] The MySQL dialect will render FROM DUAL for a SELECT statement that has no
    FROM clause but has a WHERE clause. This allows things like "SELECT 1 WHERE
    EXISTS (subquery)" kinds of queries to be used as well as other use cases.

    References: #5481

  • [mysql] [bug] Fixed an issue where CREATE TABLE statements were not specifying the
    COLLATE keyword correctly.

    References: #5411

  • [mysql] [bug] Added MariaDB code 1927 to the list of "disconnect" codes, as recent
    MariaDB versions apparently use this code when the database server was

    References: #5493


  • [sqlite] [bug] [mssql] [reflection] Applied a sweep through all included dialects to ensure names that contain
    single or double quotes are properly escaped when querying system tables,
    for all Inspector methods that accept object names as an argument
    (e.g. table names, view names, etc). SQLite and MSSQL contained two
    quoting issues that were repaired.

    References: #5456


  • [mssql] [bug] [sql] Fixed bug where the mssql dialect incorrectly escaped object names that
    contained ']' character(s).

    References: #5467


  • [py3k] [usecase] Added a **kw argument to the DeclarativeMeta.__init__() method.
    This allows a class to support the PEP 487 metaclass hook
    __init_subclass__. Pull request courtesy Ewen Gillies.

    References: ##5357

latest release: rel_1_3_20
2 months ago