Skip to content

Releases: crate/crate-python

0.31.0

30 Mar 12:06
Compare
Choose a tag to compare

What's Changed

  • SQLAlchemy Core: Support INSERT...VALUES with multiple value sets by enabling
    supports_multivalues_insert on the CrateDB dialect, it is used by pandas'
    method="multi" option

  • SQLAlchemy Core: Enable the insertmanyvalues feature, which lets you control
    the batch size of INSERT operations using the insertmanyvalues_page_size
    engine-, connection-, and statement-options.

  • SQLAlchemy ORM: Remove support for the legacy session.bulk_save_objects API
    on SQLAlchemy 2.0, in favor of the new insertmanyvalues feature. Performance
    optimizations from bulk_save() have been made inherently part of add_all().
    Note: The legacy mode will still work on SQLAlchemy 1.x, while SQLAlchemy 2.x users
    MUST switch to the new method now.

Full Changelog: 0.30.1...0.31.0

0.30.1

02 Mar 18:05
Compare
Choose a tag to compare

What's Changed

  • Fixed SQLAlchemy 2.0 incompatibility with CrateDialect.{has_schema,has_table}

Full Changelog: 0.30.0...0.30.1

0.30.0

16 Feb 15:38
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.29.0...0.30.0

0.29.0

08 Dec 16:33
Compare
Choose a tag to compare

What's Changed

  • SQLAlchemy: Added support for crate_index and nullable attributes in ORM column definitions.

  • Added support for converting TIMESTAMP columns to timezone-aware datetime objects, using the new time_zone keyword argument.

Full Changelog: 0.28.0...0.29.0

0.28.0

08 Dec 11:00
Compare
Choose a tag to compare

What's Changed

  • Added a generic data type converter to the Cursor object, for converting
    fetched data from CrateDB data types to Python data types.

  • Fixed generating appropriate syntax for OFFSET/LIMIT clauses. It was possible
    that SQL statement clauses like LIMIT -1 could have been generated. Both
    PostgreSQL and CrateDB only accept LIMIT ALL instead.

  • Added support for computed columns in the SQLAlchemy ORM.

Full Changelog: 0.27.2...0.28.0

0.27.2

10 Oct 18:07
Compare
Choose a tag to compare

What's Changed

  • Improved SQLAlchemy's CrateDialect.get_pk_constraint to be compatible with breaking changes in CrateDB >=5.1.0.

Full Changelog: 0.27.1...0.27.2

0.27.1

10 Oct 18:06
Compare
Choose a tag to compare

What's Changed

  • Fixed regression introduced by 0.27.0 resulting in unavailable servers if
    all configured servers aren't reachable once.

Full Changelog: 0.27.0...0.27.1

0.27.0

03 Jun 14:21
Compare
Choose a tag to compare
  • 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.
  • Adjusted connect arguments to accept credentials within the HTTP URI.
  • Added support for enabling SSL using SQLAlchemy DB URI with parameter ?ssl=true.
  • Added support for SQLAlchemy 1.4
    Note: For learning about the transition to SQLAlchemy 1.4, we recommend the
    corresponding documentation What’s New in SQLAlchemy 1.4?.

Breaking changes

Other than the changes on dropping support for various EOL software components, there are two behavioral changes which might affect "userspace".

SSL certificate verification

The driver now verifies SSL certificates when connecting via HTTP by default. Previously, this setting defaulted to false. This setting can be changed via the verify_ssl_cert connection parameter.

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

Full Changelog: 0.26.0...0.27.0

0.26.0

03 Jun 14:19
Compare
Choose a tag to compare
  • Enabled TCP keepalive on socket level and support for setting socket options
    when creating the connection. The supported options are:

    • TCP_KEEPIDLE (overriding net.ipv4.tcp_keepalive_time)
    • TCP_KEEPINTVL (overriding net.ipv4.tcp_keepalive_intvl)
    • TCP_KEEPCNT (overriding net.ipv4.tcp_keepalive_probes)
  • Propagate connect parameter pool_size to urllib3 as maxsize parameter
    in order to make the connection pool size configurable.

Full Changelog: 0.25.0...0.26.0

0.25.0

28 Sep 08:31
Compare
Choose a tag to compare
  • Added support for the RETURNING clause to the SQLAlchemy dialect. This
    requires CrateDB 4.2 or greater. In case you use any server side generated
    columns in your primary key constraint with earlier CrateDB versions, you can
    turn this feature off by passing implicit_returning=False in the
    create_engine() call.
  • Added support for geo_point and geo_json types to the SQLAlchemy
    dialect.

Full Changelog: 0.24.0...0.25.0