sqlite3 puzzle

inq1ltd inq1ltd at inqvista.com
Tue Jan 15 11:54:42 EST 2013


On Monday, January 14, 2013 11:09:28 PM llanitedave wrote:
> I'm trying to get an application working in Python 2.7 and wx.Python which
> contains an embedded sqlite3 file.  There are a few tables with foreign
> keys defined.  In looking at the sqlite3 documentation, it says
> 
> "Assuming the library is compiled with foreign key constraints enabled, it
> must still be enabled by the application at runtime, using the PRAGMA
> foreign_keys command." It goes on to say that foreign keys must be enabled
> separately for each connection, which is fine as my app has only one.
> 
> So I put the following test code in my initialization method:
> 
>     # open database file
>     self.geologger_db = sqlite3.connect('geologger.mgc')
>     self.db_cursor = self.geologger_db.cursor()
>     self.foreign_key_status = self.db_cursor.execute("PRAGMA foreign_keys =
> ON") self.foreign_key_status = self.foreign_key_status.fetchone()
> 
>     print self.foreign_key_status
> 
> I ran this several times while I was arranging the downstream queries, and
> each time it returned '(1,)', which means foreign keys is enabled.
> 
> But I was using a variable named 'cmd1' as a placeholder until I changed the
> name to the more descriptive 'self.foreign_key_status'.  Since I made the
> name change, however, the code only returns 'None'.  Reverting to the
> previous variable name has no effect.
> 
> Yes, I'm closing the connection with self.db_cursor.close() at the end of
> each run.
> 
> According to the sqlite3 website, getting no return value, not even a '0',
> means that "the version of SQLite you are using does not support foreign
> keys (either because it is older than 3.6.19 or because it was compiled
> with SQLITE_OMIT_FOREIGN_KEY or SQLITE_OMIT_TRIGGER defined)."
> 
> How can that be a compilation issue when it worked previously?  Does this
> somehow relate to it being a Python plugin instance?
> 
> I'm very confused.

I haven't run this myself but after 

self.foreign_key_status.fetchone()

try :
 self.geologger_db.commit()

then close the db

jimonlinux






-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130115/a6664dde/attachment.html>


More information about the Python-list mailing list