On 11/17/06, Christoph Zwerschke <[EMAIL PROTECTED]> wrote: > > I'm trying out the pgdb interface for > > the first time. One surprise was that the > > results in fetchall() are returned as a list > > of lists. The DB 2.0 specification says the > > results are a list of tuples. Is there a way > > to get a list of tuples returned? I have some > > applications that require this format, and > > copying the result is not going to be > > efficient. > > No, the DB API 2 specification does not say it is a list of tuples. It > says it is a "sequence of sequences (e.g. a list of tuples)". So it > could as well be a list of lists (as in pgdb) or a tuple of tuples or a > list of some special row objects. All these different implementations > exist. So if your application wants to be DB API 2 conform, it should > not assume anything here. If you need something specific (normally it > should not matter), use tuple(...) or list(...) to convert it > explicitly. Don't worry, this will not copy the whole result: > > >>> a = ['test'] > >>> b = tuple(a) > >>> b[0] is a[0] > True > > The reason why pgdb (contrary to pg) returns a list of lists is that the > rows are typecasted in pgdb and this process converts them to lists. It > would require an additional step to convert them back to tuples. I see > not real reason why PyGreSQL should do that other that it would be more > consistent with the implementation in the classic pg interface and also > in psycopg2 (but not in some other DB API 2 interfaces).
Thanks Chris - To give some context to this: I am working with numerical python, reading from postgres (and other) databases into NumPy arrays. Since I sent this message, a very useful thread on this subject has developed on the numpy list. First of all, it is nice to know that no copy is made, I didn't realize that. Also, we have found the cursor-as-iterator to be very useful in creating these arrays using the "fromiter" array constructor. This is efficient both in terms of memory and speed. Thanks again, Erin _______________________________________________ PyGreSQL mailing list [email protected] http://mailman.vex.net/mailman/listinfo/pygresql
