Peter, I'm just reviewing your SQLSTATE patch.

It works nicely with both the classic API and the DB-API 2.

But I wonder whether making it a property of the connection is the right approach.

In DB-API 2 we could make it a property of the cursor instead, and instead of storing the last sqlstate after every sql command, we can just retrieve it from the last_result of the corresponding pgsourceobject when requested as a property of the cursor.

In the classic API, we could make it a property of the query object, but the problem here is that no query object is returned in case of an error, so this is not really useful.

A simple solution to this problem would be to add sqlstate as an attribute to the exception raised when an error is raised.

This is also the way how SQLSTATE is returned in psycopg2 and some other drivers. I only wonder why the call the attribute "pgcode" instead of "sqlstate", since SQLSTATE is meant to be a database independent string, so it would make sense that all DB-API 2 drivers use the same name for it.

Opinions about making sqlstate an attribute of the exception raised?

If we implement it that way, then we might not even need to add it as a property to the connection (resp. the cursor or query object), because SQLSTATE is only really interesting in the error case. Theoretically you can get warnings in the 01... or 02... class without an error, but they are not very interesting and I was not able to provoke such.

-- Christoph
_______________________________________________
PyGreSQL mailing list
[email protected]
https://mail.vex.net/mailman/listinfo.cgi/pygresql

Reply via email to