> 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). -- Chris _______________________________________________ PyGreSQL mailing list [email protected] http://mailman.vex.net/mailman/listinfo/pygresql
