[Tutor] Module? Error handling specific to SQLite3

Peter Otten __peter__ at web.de
Fri Sep 26 19:46:44 CEST 2014


Paul Smith wrote:

> Early stages messing with module sqlite3 in python3.4. I am successful in
> creating sqlite tables of my own and interacting with other sqlite tables,
> however in refining the code from a purely "it can do it" stage to a more
> stable working piece of code I run into this problem.
> 
> I call the correct sqlite3 items and create table D to which I add or
> 'amend' specific information from tables A and Z.
> 
> However since the table is already created the line of code that created
> the table subsequently kicks out this error when the program runs again.
> 
> Traceback (most recent call last):
>   File "C:\Users\Thechives\Desktop\pyweather\AlphaItems\
> weathercodetrial1.2.py", line 206, in <module>
>     cur.execute('''CREATE TABLE "D" AS SELECT weather_current FROM
> "todays_weather" WHERE weather_current IS NOT NULL''')
> sqlite3.OperationalError: table "D" already exists
> 
> So how does one handle the error or ignore the creation portion of the
> program once the table is created?
> 
> Python exception handling has not helped, Try - Except - although I am
> mashing it I am sure. I believe since we are actually engaging sqlite via
> python at this point in the code it should be a sqlite error handler or
> some such. So simple and yet it eludes my noobile mind.

While you could wrap the cur.execute() in a try except

try:
    cur.execute('''CREATE TABLE "D" ...''')
except sqlite3.OperationalError:
    pass # assume that the table already exists and ignore the error

there is a also way to handle this in SQL:

cur.execute('''CREATE TABLE IF NOT EXISTS "D" ...''')

See also the sqlite3 documentation at 
<http://www.sqlite.org/lang_createtable.html>.




More information about the Tutor mailing list