Confusion over Python drivers

From: Kevin Ar18 <kevinar18(at)hotmail(dot)com>
To: <pgsql-hackers(at)postgresql(dot)org>
Subject: Confusion over Python drivers
Date: 2010-02-07 03:46:55
Message-ID: SNT110-W19B857B0F06D828BBC0DA6AA520@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


I saw this on reddit and thought I might drop a line.

I went through this same issue, trying to find a postgresql driver. Mostly, I had no intention of using psycopg because of its copyleft licensing. (Of course, I don't need to go into why.)

Anyways, here's some info that might help on three alternatives:
Py-postgresql, PyGreSQL, and PG3000

Py-postgresql is active (but I only see 1 person committing)
MIT/BSD style license

It uses some some C for speed.

It has DB-API and PG-API bindings.

Problem: is it Python 3 only!

PyGreSQL (looking to not be very active in the last few months)
MIT/BSD style license
I'm vague on it's features, whether it has C optimizations, or if it is a version limited to Python 3 or 2.x

PG8000 is active at the moment
MIT/BSD style license
It works on 2.x and Python 3

Problem: it is pure Python, so it is slower

If you plan on pursuing this, I'd recommend talking to people on on 3 projects. Here's what I would describe as ideal in a project:

* MIT/BSD style license
* works on Python 2.x and 3
* C optimizations for speed (or whatever for speed)

------------------
That's that part. Now for some problems that would need solving in order for the db api to be extremely useful/userfriendly in the Python world:
------------------
* SQLAlchemy bindings/support -- as of right now only psycopyg works in
SQLAlchemy without problems. PG8000 will work, but you need an
experimental version of boht PG8000 and SQLAlchemy. The other two do
not work. SQLAlchemy support is probably most needed of anything. SQLAlchemy support should not only be possible but default.
* Django bindings (these are unique to Django and nobody but psycopg has
them, which is not good). Django support should not only be possible but default.

* Needs 2.x and Python 3 compatability
* It is inevitable that if the library uses C optimizations, then that means they need to provide lots of different binaries -- think 32bit vs 64bit and then 2.4, 2.5, 3.0 etc.... Some combinations will often be left out making it hard for someone to use/install it.

Of course all of this is from the perspective of Python users. Of course, you have your own features that you want from your end (from PostgreSQL's perspective). Perhaps this info would help you to know which avenue to pursue.

_________________________________________________________________
Your E-mail and More On-the-Go. Get Windows Live Hotmail Free.
http://clk.atdmt.com/GBL/go/201469229/direct/01/

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2010-02-07 04:06:16 Re: Confusion over Python drivers
Previous Message Robert Haas 2010-02-07 02:11:01 Re: Confusion over Python drivers