github sqlalchemy/sqlalchemy rel_1_1_4


Released: November 15, 2016


  • [orm] [bug] Fixed bug in Session.bulk_update_mappings() where an alternate-named
    primary key attribute would not track properly into the UPDATE statement.

    This change is also backported to: 1.0.16

    References: #3849

  • [orm] [bug] Fixed bug in Session.bulk_save() where an UPDATE would
    not function correctly in conjunction with a mapping that
    implements a version id counter.

    This change is also backported to: 1.0.16

    References: #3781

  • [orm] [bug] Fixed bug where the Mapper.attrs,
    Mapper.all_orm_descriptors and other derived attributes would
    fail to refresh when mapper properties or other ORM constructs were
    added to the mapper/class after these accessors were first called.

    This change is also backported to: 1.0.16

    References: #3778

  • [orm] [bug] Fixed regression in collections due to #3457 whereby
    deserialize during pickle or deepcopy would fail to establish all
    attributes of an ORM collection, causing further mutation operations to

    References: #3852

  • [orm] [bug] Fixed long-standing bug where the "noload" relationship loading
    strategy would cause backrefs and/or back_populates options to be

    References: #3845


  • [engine] [bug] Removed long-broken "default_schema_name()" method from
    Connection. This method was left over from a very old
    version and was non-working (e.g. would raise). Pull request
    courtesy Benjamin Dopplinger.


  • [sql] [bug] Fixed bug where newly added warning for primary key on insert w/o
    autoincrement setting (see change_3216) would fail to emit
    correctly when invoked upon a lower-case table() construct.

    References: #3842


  • [postgresql] [bug] Fixed regression caused by the fix in #3807 (version 1.1.0)
    where we ensured that the tablename was qualified in the WHERE clause
    of the DO UPDATE portion of PostgreSQL's ON CONFLICT, however you
    cannot put the table name in the WHERE clause in the actual ON
    CONFLICT itself. This was an incorrect assumption, so that portion
    of the change in #3807 is rolled back.

    References: #3807, #3846


  • [mysql] [feature] Added support for server side cursors to the mysqlclient and
    pymysql dialects. This feature is available via the
    Connection.execution_options.stream_results flag as well
    as the server_side_cursors=True dialect argument in the
    same way that it has been for psycopg2 on PostgreSQL. Pull request
    courtesy Roman Podoliaka.

  • [mysql] [bug] MySQL's native ENUM type supports any non-valid value being sent, and
    in response will return a blank string. A hardcoded rule to check for
    "is returning the blank string" has been added to the MySQL
    implementation for ENUM so that this blank string is returned to the
    application rather than being rejected as a non-valid value. Note that
    if your MySQL enum is linking values to objects, you still get the
    blank string back.

    References: #3841


  • [sqlite] [bug] Added quotes to the PRAGMA directives in the pysqlcipher dialect
    to support additional cipher arguments appropriately. Pull request
    courtesy Kevin Jurczyk.

  • [sqlite] [bug] [py3k] Added an optional import for the pysqlcipher3 DBAPI when using the
    pysqlcipher dialect. This package will attempt to be imported
    if the Python-2 only pysqlcipher DBAPI is non-present.
    Pull request courtesy Kevin Jurczyk.


  • [mssql] [bug] Fixed bug in pyodbc dialect (as well as in the mostly non-working
    adodbapi dialect) whereby a semicolon present in the password
    or username fields could be interpreted as a separator for another
    token; the values are now quoted when semicolons are present.

    This change is also backported to: 1.0.16

    References: #3762

latest releases: rel_1_3_20, rel_1_3_19, rel_1_3_18...
14 months ago