Is anyone able to tell me why I'm having this commit problem in python?
 
Mark

On Saturday, October 04, 2014 11:43:41 AM Mark Halegua wrote:
> Just tried the same code on a different system, using sqlite3 3.8.2
> 
> Same result.
> 
> Mark
> 
> On Saturday, October 04, 2014 10:44:20 AM Mark Halegua wrote:
> > Kieth,
> > 
> > thanks for the info, however, I tested the following code on a LOCAL copy
> > of the database, one where at the sqlite3 command line I was able to do
> > an insert without problems, and yet, the python code returned the
> > 'database is locked; error message in the code (I used a wxpython
> > messagebox widget to display the error).
> > 
> > Why would it return a locked message in this case?
> > 
> > Here's the code:
> >     def OnSave(self, event):
> >             self.dbupdated = True
> >             self.pub_title = self.pub_text.GetValue()
> >             self.pub_remarks = self.remarks_text.GetValue()
> >             print self.pub_title
> >             print self.pub_remarks
> >             # update relevant tables(s)
> >             self.cdata.execute('insert into publishers(publisher_name,
> > 
> > remarks)  values("test", "remarks");')
> > 
> >             try:
> >                     self.database.commit()
> >             
> >             except sqlite.Error, dberr:
> >                     wx.MessageBox(dberr.args[0], 'DB Warning',
> > 
> > wx.OK)
> > 
> >                     self.dbupdated = False
> >             
> >             # clear fields
> >             
> >             if self.dbupdated:
> >                     self.pub_text.SetValue(' ')
> >                     self.remarks_text.SetValue(' ')
> >             
> >             print 'dbupdated = ' , self.dbupdated
> >             print self.add
> >             self.add = False
> >             print self.add
> > 
> > sqlite3 version 3.7.4
> > 
> > Mark
> > 
> > On Friday, October 03, 2014 10:37:06 PM Keith Medcalf wrote:
> > > Yes.  pysqlite/sqlite3 in python tries to manage transactions for you by
> > > automatically starting them, and you need to commit them yourself.  This
> > > is
> > > controlled by the isolation_level attribute set on the connection (can
> > > also
> > > be set as a parameter when you open the connection).
> > > 
> > > The default value is '' (an empty string).  Other valid values are
> > > 'IMMEDIATE', 'EXCLUSIVE' and None.  Basically, pysqlite tries to detect
> > > the
> > > type of statement you are running and if it is a DML statement (select,
> > > insert, update, delete) it automatically begins a transaction for you if
> > > one is not in progress by first doing a 'BEGIN '+isolation_level.  If
> > > the
> > > statement is something other than DML, then it will 'COMMIT' before
> > > executing the DDL (CREATE/DROP) then it will 'COMMIT' after executing
> > > it.
> > > It does not know about the "WITH" statement, so treats those as DDL
> > > rather
> > > than DML.
> > > 
> > > Setting isolation_level to None tells pysqlite/sqlite3 to not manage
> > > transactions and let the SQLite3 engine do it as it would from the C
> > > interface or the sqlite3.exe command line tool (what the dbapi calls
> > > autocommit mode), so you have to issue your own BEGIN and
> > > COMMIT/ROLLBACK
> > > commands where you want them and the pysqlite/sqlite3 interface modules
> > > will not attempt to begin or commit transactions for you.
> > > 
> > > On Friday, 3 October, 2014 21:48, you wrote:
> > > >Ah, ok.  after doing a database commit I get the error going to stderr.
> > > >Now it's just a matter
> > > >of capturing/redirecting the stderr output and using an except there.
> > > >
> > > >On Friday, October 03, 2014 11:35:08 PM you wrote:
> > > >> the sqlite3 command line doesn't require a commit, it gave an error
> > > >> after the attempted insert command.
> > > >> 
> > > >> pysqlite requires one?
> > > >> 
> > > >> Mark
> > > >> 
> > > >> On Friday, October 03, 2014 09:06:56 PM Keith Medcalf wrote:
> > > >> > Are you committing the change?
> > > >> > 
> > > >> > >-----Original Message-----
> > > >> > >From: [email protected] [mailto:sqlite-users-
> > > >> > >[email protected]] On Behalf Of Mark Halegua
> > > >> > >Sent: Friday, 3 October, 2014 20:58
> > > >> > >To: [email protected]
> > > >> > >Subject: [sqlite] passing error messages to pysqlite
> > > >> > >
> > > >> > >I have a sqlite3 database.  In the networkied are I have the db is
> > > >
> > > >locked
> > > >
> > > >> > >(wee've
> > > >> > >discussed this before, and I'm using it mostly on a local machine,
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to