Benno Lang wrote:
On 10 March 2010 11:37, Alan Harris-Reid <aharrisr...@googlemail.com> wrote:
Hi there,

I am using the sqlite3 module with Python 3.1, and have some code which goes
something like as follows...

import sqlite3
con = sqlite3.connect('MyDatabase.db')

try:
  execresult = con.execute('INSERT INTO MyTable (field_name) VALUES
("MyValue")')
  con.commit()
except:
  con.rollback()
  If con.execute() fails, nothing is returned, and although the code
correctly executes the rollback next, I have no idea why, and therefore
cannot create a suitable error-handler with meaningful messages.
I notice from the SQLite website that there are error codes, but it looks
like the sqlite3 module is not reporting them.

Do you mean numerical error codes? Which page on the SQLite website
are you referring to? Certainly the exception contains usable data.
Try something like this:

try:
  execresult = con.execute('INSERT INTO MyTable (field_name) VALUES
("MyValue")')
  con.commit()
except Exception as error:
  print("Didn't work:", error)
  con.rollback()

(I didn't create a table, so I get "Didn't work: no such table: MyTable")

HTH,
benno
Hi Benno,  your example is great - just what I needed!

Regarding SQLite error codes, the list I was referring to is at www.sqlite.org/c3ref/c_abort.html <http://www.sqlite.org/c3ref/c_abort.html>, but it doesn't look complete because I have already come-across some IntegrityError messages which aren't on the list.

Regards,
Alan




_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to