Differences between revisions 1 and 35 (spanning 34 versions)
Revision 1 as of 2002-07-15 21:20:30
Size: 1050
Editor: pD9EB03FC
Comment:
Revision 35 as of 2012-01-20 15:11:22
Size: 5406
Comment: added p8000 maintenance fork
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
[[TableOfContents]]
Line 4: Line 3:
== Masthead == = PostgreSQL =
Line 7: Line 6:
  licence::
  platforms::
  licence:: BSD
  platforms:: Unix, win32 ([[http://www.postgresql.org/docs/faqs.FAQ_MINGW.html|NT-based Microsoft operating system]])

== Pros ==

From the [[http://www.postgresql.org/about/|features page]]:

 * Good compliance with SQL standards
 * Supports many SQL features
   * Foreign keys
   * Implements all SQL99 join types: inner join, left, right, full outer join, natural join
   * Subqueries
   * UNION and UNION ALL, INTERSECT and EXCEPT
   * Views
   * Triggers
 * Support for international character sets, multibyte character encodings, Unicode
 * Supports many languages for writing server-side functions/procedures and aggregates: Python, C, Perl, Tcl, PL/PgSQL, ...
 * ACID compliant
 * Support for rollback
 * Serializable transaction isolation
 * Multi-Version Concurrency Control (MVCC) for highly scalable concurrent applications

== Cons ==

 * [To be written]
Line 12: Line 35:
=== PyGresQL === === psycopg2 ===
Line 14: Line 37:
  URL:: http://www.druid.net/pygresql/
  licence::
  platforms::
  Python versions::
  URL:: http://initd.org/psycopg/
  Licence:: LGPL
  Platforms:: Unix, win32
  Python versions:: 2.4, 2.5, 2.6, 2.7, 3.1, 3.2
  Maintenance:: Active development
Line 19: Line 43:
==== Extensions to DB API ==== Psycopg is the most popular PostgreSQL adapter for the Python programming language. At its core it fully implements the Python DB API 2.0 specifications. Several extensions allow access to many of the features offered by PostgreSQL.
Line 21: Line 45:
==== Comments ==== Extended documentation available on http://initd.org/psycopg/docs/
Line 23: Line 47:
=== PoPy ===
Line 25: Line 48:
  URL:: http://popy.sourceforge.net
  licence::
  platforms::
  Python versions::
=== PyGreSQL ===
Line 30: Line 50:
==== Extensions to DB API ====

==== Comments ====

=== psycopg ===

  URL:: http://initd.org/Software/psycopg
  licence::
  platforms::
  Python versions::

==== Extensions to DB API ====

==== Comments ====
  URL:: http://www.pygresql.org/
  licence:: BSD-like
  platforms:: Unix, win32
  Python versions:: 2.3 thru 2.6
  Maintenance:: Last version released is 4.0 (2009-01-01)
Line 48: Line 59:
  licence::
  platforms::
  Python versions::
  Licence:: BSD-like (depends on mxDateTime, which may be GPL-incompatible)
  Platforms:: Unix, win32
  Python versions:: 2.1 thru 2.3
  Maintenance:: Active, sporatic (as of 10/2003)
Line 54: Line 66:
==== Comments ====   * The fetch methods on cursors return an instances of PgResultSet, which you can use to access rows by index (like in DB-API), dictionary-like or with attributes. This feature can be turned off for a slight performance boost.
  * Support for PostgreSQL notifications in the low-level API.
Line 56: Line 69:
== Other Drivers == === mxODBC ===
Line 58: Line 71:
=== driver name ===   URL:: http://www.egenix.com/products/python/mxODBC/
  Licence:: eGenix Commercial License
  Platforms:: Windows, Linux, MacOS X, FreeBSD, Solaris, AIX
  Python versions:: 2.1 - 2.5
Line 60: Line 76:
  URL::
  licence::
  platforms::
  Python versions::
mxODBC is compatible with the [[http://www.postgresql.org/ftp/odbc/versions/|PostgreSQL ODBC driver]] on Windows and Unix.
Line 65: Line 78:
==== Programming Model ==== Note that you have to enable the advanced option "Use bytea for lo" in case you want to work with BLOBs.


=== pyodbc ===

  URL:: http://code.google.com/p/pyodbc
  License:: MIT
  Platforms:: Windows, Linux, MacOS X, FreeBSD, Solaris, Any (source provided)
  Python versions:: 2.4 - 2.6

Actively maintained Open Source project.

Precompiled binaries are available for Windows. Red``Hat Enterprise Linux, Centos, and Fedora have precompiled RPMs available in their Extras repositories.


=== py-postgresql ===

  URL:: http://python.projects.postgresql.org
  License:: BSD/MIT/PSF
  Platforms:: Any (windows installers available)
  Python version:: 3.x
  Maintenance:: Active development
Line 69: Line 103:
Python 3 port of pg_proboscis and friends. Pure Python with C optimizations. Prepared statement driven APIs, PG-API.(DB-API is there as well).

Written with efficiency and flexibility in mind. Data is streamed in when requested to do so, and always is streamed in under DB-API.

=== txpostgres ===

  URL:: https://launchpad.net/txpostgres/
  License:: MIT/X/Expat
  Platforms:: Any

A Twisted wrapper for asynchronous PostgreSQL connections.

Uses psycopg2, which exposes the async interfaces of the native PostgreSQL library, libpq.

Can be used as a drop-in replacement for Twisted's adbapi module when working with PostgreSQL. The only part that does not provide 100% compatibility is connection pooling, although pooling provided by txpostgres is very similar to the one Twisted adbapi offers.


=== pg8000 ===

  URL:: http://pybrary.net/pg8000/
  License:: BSD
  Platforms:: Any (windows installers available)
  Python version:: 2,5, 2.6, 3.x

pg8000 is somewhat distinctive in that it is written entirely in Python and does not rely on any external libraries

'''Important''': New [[http://code.google.com/p/pg8000/|maintenance fork]] including several bugfixes, compatibility features and extensibility enhancements similar to psycopg2 exposed functionalities. [[http://html.pg8000.googlecode.com/hg/index.html|Up to date documentation]]

=== Other Python Interfaces for PostgreSQL ===

These entries still need to be updated to the standard format (see above):

 * PoPy: http://sourceforge.net/projects/popy
  * No activity since 2003

 * pgasync: http://jamwt.com/pgasync/
  * Asynchronous and pure Python. Speed comparable to C bindings. Special support for Twisted.

 * bpgsql: http://barryp.org/software/bpgsql/
  * Barebones pure-Python PostgreSQL client

 * [[sipPQ]]

----
Line 70: Line 149:

== Pros ==

== Cons ==
 * [[Zope]]
 * DbDoc
 * three PostgreSQL drivers (using pgdb, included with the PostgreSQL distro, pypgsql, and psycopg) exist for [[PyDO]] (Python Data Objects)

PostgreSQL

URL

http://www.postgresql.org/

licence
BSD
platforms

Unix, win32 (NT-based Microsoft operating system)

Pros

From the features page:

  • Good compliance with SQL standards
  • Supports many SQL features
    • Foreign keys
    • Implements all SQL99 join types: inner join, left, right, full outer join, natural join
    • Subqueries
    • UNION and UNION ALL, INTERSECT and EXCEPT
    • Views
    • Triggers
  • Support for international character sets, multibyte character encodings, Unicode
  • Supports many languages for writing server-side functions/procedures and aggregates: Python, C, Perl, Tcl, PL/PgSQL, ...
  • ACID compliant
  • Support for rollback
  • Serializable transaction isolation
  • Multi-Version Concurrency Control (MVCC) for highly scalable concurrent applications

Cons

  • [To be written]

DB API 2.0 Drivers

psycopg2

URL

http://initd.org/psycopg/

Licence
LGPL
Platforms
Unix, win32
Python versions
2.4, 2.5, 2.6, 2.7, 3.1, 3.2
Maintenance
Active development

Psycopg is the most popular PostgreSQL adapter for the Python programming language. At its core it fully implements the Python DB API 2.0 specifications. Several extensions allow access to many of the features offered by PostgreSQL.

Extended documentation available on http://initd.org/psycopg/docs/

PyGreSQL

URL

http://www.pygresql.org/

licence
BSD-like
platforms
Unix, win32
Python versions
2.3 thru 2.6
Maintenance
Last version released is 4.0 (2009-01-01)

pyPgSQL

URL

http://pypgsql.sourceforge.net

Licence
BSD-like (depends on mxDateTime, which may be GPL-incompatible)
Platforms
Unix, win32
Python versions
2.1 thru 2.3
Maintenance
Active, sporatic (as of 10/2003)

Extensions to DB API

  • The fetch methods on cursors return an instances of PgResultSet, which you can use to access rows by index (like in DB-API), dictionary-like or with attributes. This feature can be turned off for a slight performance boost.

  • Support for PostgreSQL notifications in the low-level API.

mxODBC

URL

http://www.egenix.com/products/python/mxODBC/

Licence
eGenix Commercial License
Platforms
Windows, Linux, MacOS X, FreeBSD, Solaris, AIX
Python versions
2.1 - 2.5

mxODBC is compatible with the PostgreSQL ODBC driver on Windows and Unix.

Note that you have to enable the advanced option "Use bytea for lo" in case you want to work with BLOBs.

pyodbc

URL

http://code.google.com/p/pyodbc

License
MIT
Platforms
Windows, Linux, MacOS X, FreeBSD, Solaris, Any (source provided)
Python versions
2.4 - 2.6

Actively maintained Open Source project.

Precompiled binaries are available for Windows. RedHat Enterprise Linux, Centos, and Fedora have precompiled RPMs available in their Extras repositories.

py-postgresql

URL

http://python.projects.postgresql.org

License
BSD/MIT/PSF
Platforms
Any (windows installers available)
Python version
3.x
Maintenance
Active development

Comments

Python 3 port of pg_proboscis and friends. Pure Python with C optimizations. Prepared statement driven APIs, PG-API.(DB-API is there as well).

Written with efficiency and flexibility in mind. Data is streamed in when requested to do so, and always is streamed in under DB-API.

txpostgres

URL

https://launchpad.net/txpostgres/

License
MIT/X/Expat
Platforms
Any

A Twisted wrapper for asynchronous PostgreSQL connections.

Uses psycopg2, which exposes the async interfaces of the native PostgreSQL library, libpq.

Can be used as a drop-in replacement for Twisted's adbapi module when working with PostgreSQL. The only part that does not provide 100% compatibility is connection pooling, although pooling provided by txpostgres is very similar to the one Twisted adbapi offers.

pg8000

URL

http://pybrary.net/pg8000/

License
BSD
Platforms
Any (windows installers available)
Python version
2,5, 2.6, 3.x

pg8000 is somewhat distinctive in that it is written entirely in Python and does not rely on any external libraries

Important: New maintenance fork including several bugfixes, compatibility features and extensibility enhancements similar to psycopg2 exposed functionalities. Up to date documentation

Other Python Interfaces for PostgreSQL

These entries still need to be updated to the standard format (see above):


Supported Python Applications

  • Zope

  • DbDoc

  • three PostgreSQL drivers (using pgdb, included with the PostgreSQL distro, pypgsql, and psycopg) exist for PyDO (Python Data Objects)

PostgreSQL (last edited 2021-03-31 06:49:56 by TonyLocke)

Unable to edit the page? See the FrontPage for instructions.