Psycopg 2.7 released
Posted by Daniele Varrazzo on 2017-03-01
Tagged as
news,
release
Finally here! Thank you very much for waiting so long: we have finally released Psycopg 2.7!
Buzzwords:
- Faster! Helps generating SQL for repeatedly executed statements and faster Unicode decoding.
- Safer! Helps generating dynamic SQL statements with variable table and field names.
- Easier! Use the binary package to avoid the need of C compiler, pg_config, libpq required on the clients.
- Replication! Support for PostgreSQL physical and logical replication.
- Plays-better-with-pgbouncer-at-transaction-pooling-level! This.
You can download as usual from the canonical urls:
Or just use pip:
pip install psycopg2
What's new in psycopg 2.7
New features:
- Added psycopg2.sql module to generate SQL dynamically (ticket #308).
- Added replication protocol support (ticket #322). Main authors are Oleksandr Shulgin and Craig Ringer, who deserve a huge thank you.
- Added parse_dsn() and make_dsn() functions (ticket #321, ticket #363). connect() now can take both dsn and keyword arguments, merging them together.
- Added __libpq_version__ and libpq_version() to inspect the version of the libpq library the module was compiled/loaded with (ticket #35, ticket #323).
- The attributes notices and notifies can be customized replacing them with any object exposing an append() method (ticket #326).
- Adapt network types to ipaddress objects when available. When not enabled, convert arrays of network types to lists by default. The old Inet adapter is deprecated (ticket #317, ticket #343, ticket #387).
- Added quote_ident() function (ticket #359).
- Added get_dsn_parameters() connection method (ticket #364).
- callproc() now accepts a dictionary of parameters (ticket #381).
- Give precedence to __conform__() over superclasses to choose an object adapter (ticket #456).
- Using Python C API decoding functions and codecs caching for faster unicode encoding/decoding (ticket #473).
- executemany() slowness addressed by execute_batch() and execute_values() (ticket #491).
- Added async_ as an alias for async to support Python 3.7 where async will become a keyword (ticket #495).
- Unless in autocommit, do not use default_transaction_* settings to control the session characteristics as it may create problems with external connection pools such as pgbouncer; use BEGIN options instead (ticket #503).
- isolation_level is now writable and entirely separated from autocommit; added readonly, deferrable writable attributes.
Bug fixes:
- Fixed error caused by missing decoding LoggingConnection (ticket #483).
- Fixed integer overflow in interval seconds (ticket #512).
Other changes:
- Dropped support for Python 2.5 and 3.1.
- Dropped support for client library older than PostgreSQL 9.1 (but older server versions are still supported).
- isolation_level doesn't read from the database but will return ISOLATION_LEVEL_DEFAULT if no value was set on the connection.
- Empty arrays no more converted into lists if they don't have a type attached (ticket #506)