Skip to content
Jun 15, 2015


Psycopg 2.6.1 released
- Lists consisting of only `None` are escaped correctly (:ticket:`#285`).
- Fixed deadlock in multithread programs using OpenSSL (:ticket:`#290`).
- Correctly unlock the connection after error in flush (:ticket:`#294`).
- Fixed ``MinTimeLoggingCursor.callproc()`` (:ticket:`#309`).
Feb 9, 2015


Psycopg 2.6 is now
New features:

- Added support for large objects larger than 2GB. Many thanks to Blake Rouse
  and the MAAS Team for the feature development.
- Python `time` objects with a tzinfo specified and PostgreSQL :sql:`timetz`
  data are converted into each other (:ticket:`#272`).

Bug fixes:

- Json apapter's `!str()` returns the adapted content instead of the `!repr()`
Feb 8, 2015


Psycopg 2.5.5 released
- Named cursors used as context manager don't swallow the exception on exit
- `cursor.description` can be pickled (:ticket:`#265`).
- Propagate read error messages in COPY FROM (:ticket:`#270`).
- PostgreSQL time 24:00 is converted to Python 00:00 (:ticket:`#278`).
Aug 30, 2014


Psycopg 2.5.4 released
- Added :sql:`jsonb` support for PostgreSQL 9.4 (:ticket:`#226`).
- Fixed segfault if COPY statements are passed to `~cursor.execute()` instead
  of using the proper methods (:ticket:`#219`).
- Force conversion of pool arguments to integer to avoid potentially unbounded
  pools (:ticket:`#220`).
- Cursors :sql:`WITH HOLD` don't begin a new transaction upon move/fetch/close
- Cursors :sql:`WITH HOLD` can be used in autocommit (:ticket:`#229`).
- `~cursor.callproc()` doesn't silently ignore an argument without a length.
- Fixed memory leak with large objects (:ticket:`#256`).
- Make sure the internal ```` module can be imported stand-alone (to
  allow modules juggling such as the one described in :ticket:`#201`).
May 13, 2014


Psycopg 2.5.3 released
- Work around `pip issue #1630 <pypa/pip#1630
  making installation via ``pip -e git+url`` impossible (:ticket:`#18`).
- Copy operations correctly set the `cursor.rowcount` attribute
- It is now possible to call `get_transaction_status()` on closed connections.
- Fixed unsafe access to object names causing assertion failures in
  Python 3 debug builds (:ticket:`#188`).
- Mark the connection closed if found broken on `poll()` (from :ticket:`#192`
- Fixed handling of dsn and closed attributes in connection subclasses
  failing to connect (from :ticket:`#192` discussion).
- Added arbitrary but stable order to `Range` objects, thanks to
  Chris Withers (:ticket:`#193`).
- Avoid blocking async connections on connect (:ticket:`#194`). Thanks to
  Adam Petrovich for the bug report and diagnosis.
- Don't segfault using poorly defined cursor subclasses which forgot to call
  the superclass init (:ticket:`#195`).
- Mark the connection closed when a Socket connection is broken, as it
  happens for TCP connections instead (:ticket:`#196`).
- Fixed overflow opening a lobject with an oid not fitting in a signed int
- Fixed handling of explicit default ``cursor_factory=None`` in
  `connection.cursor()` (:ticket:`#210`).
- Fixed possible segfault in named cursors creation.
- Fixed debug build on Windows, thanks to James Emerton.
Jan 7, 2014


Psycopg 2.5.2 released
- Fixed segfault pickling the exception raised on connection error
  ticket #170.
- Meaningful connection errors report a meaningful message, thanks to
  Alexey Borzenkov (ticket #173).
- Manually creating 'lobject' with the wrong parameter doesn't segfault
  (ticket #187).
Jun 23, 2013


Psycopg 2.5.1 released
- Fixed build on Solaris 10 and 11 where the round() function is already
  declared (ticket #146).
- Fixed comparison of 'Range' with non-range objects (ticket #164).
  Thanks to Chris Withers for the patch.
- Fixed double-free on connection dealloc (ticket #166). Thanks to
  Gangadharan S.A. for the report and fix suggestion.
Apr 7, 2013


Psycopg 2.5 released
New features:

- Added JSON adaptation.
- Added support for PostgreSQL 9.2 range types .
- 'connection' and 'cursor' objects can be used in "with" statements
  as context managers as specified by a recent DBAPI  extension.
- Added 'Diagnostics' object to get extended info from a database error.
  Many thanks to Matthew Woodcraft for the implementation (ticket #149).
- Added 'connection.cursor_factory' attribute to customize the default
  object returned by 'cursor()'.
- Added support for backward scrollable cursors. Thanks to Jon Nelson
  for the initial patch (ticket #108).
- Added a simple way to customize casting of composite types into
  Python objects other than namedtuples.  Many thanks to Ronan Dunklau
  and Tobias Oberstein for the feature development.
- 'connection.reset()' implemented using 'DISCARD ALL' on server
  versions supporting it.

Bug fixes:

- Properly cleanup memory of broken connections (ticket #148).
- Fixed bad interaction of '' with other dependencies in
  Distribute projects on Python 3 (ticket #153).

Other changes:

- Added support for Python 3.3.
- Dropped support for Python 2.4. Please use Psycopg 2.4.x if you
  need it.
- 'errorcodes' map updated to PostgreSQL 9.2.
- Dropped Zope adapter from source repository. ZPsycopgDA now has its
  own project at <>.
Dec 11, 2012


Release 2.4.6
- Fixed 'cursor()' arguments propagation in connection subclasses
  and overriding of the 'cursor_factory' argument.  Thanks to
  Corry Haines for the report and the initial patch (ticket #105).
- Dropped GIL release during string adaptation around a function call
  invoking a Python API function, which could cause interpreter crash.
  Thanks to Manu Cupcic for the report (ticket #110).
- Close a green connection if there is an error in the callback.
  Maybe a harsh solution but it leaves the program responsive
  (ticket #113).
- 'register_hstore()', 'register_composite()', 'tpc_recover()' work with
  RealDictConnection and Cursor (ticket #114).
- Fixed broken pool for Zope and connections re-init across ZSQL methods
  in the same request (tickets #123, #125, #142).
- connect() raises an exception instead of swallowing keyword arguments
  when a connection string is specified as well (ticket #131).
- Discard any result produced by 'executemany()' (ticket #133).
- Fixed pickling of FixedOffsetTimezone objects (ticket #135).
- Release the GIL around PQgetResult calls after COPY (ticket #140).
- Fixed empty strings handling in composite caster (ticket #141).
- Fixed pickling of DictRow and RealDictRow objects.
Mar 29, 2012


Release 2.4.5
- The close() methods on connections and cursors don't raise exceptions
  if called on already closed objects.
- Fixed fetchmany() with no argument in cursor subclasses
  (ticket #84).
- Use lo_creat() instead of lo_create() when possible for better
  interaction with pgpool-II (ticket #88).
- Error and its subclasses are picklable, useful for multiprocessing
  interaction (ticket #90).
- Better efficiency and formatting of timezone offset objects thanks
  to Menno Smits (tickets #94, #95).
- Fixed 'rownumber' during iteration on cursor subclasses.
  Regression introduced in 2.4.4 (ticket #100).
- Added support for 'inet' arrays.
- Fixed 'commit()' concurrency problem (ticket #103).
- Codebase cleaned up using the GCC Python plugin's static analysis
  tool, which has revealed several unchecked return values, possible
  NULL dereferences, reference counting problems. Many thanks to David
  Malcolm for the useful tool and the assistance provided using it.
Something went wrong with that request. Please try again.