Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Sqlite3 trouble

BrontesinhoBrontesinho Posts: 2Member
I'm having some trouble with sqlite3 on my windows mobile device. Sometimes it happens that commit is not working.

Here is the code, that I'm using:
[code]
def OnSaveProfile(self, event):
naziv = self.edt_title.text
if not naziv:
gui.Message.ok(u"Error!", u"Enter profile title!", icon='error', parent=self)
return 0
potnik = self.edt_st_potn.text
if not potnik:
gui.Message.ok(u"Error!", u"Enter number of worker!", icon='error', parent=self)
return 0
baza = self.com_baza.text

#Here I connect to the database
conn = orodja.povezava_na_bazo(self, "Nastavitve")
c = conn.cursor()
c.execute("Select nast_koda from Nastavitve where nast_koda = 'prof_%(naziv)s'" % {"naziv": naziv})
dRez = c.fetchone()
cins = conn.cursor()
if dRez:#Checking if I need to update or insert new value
retexec = cins.execute("Update Nastavitve set nast_vrednost = ? where nast_koda = ?", (potnik + "," + baza, "prof_"+naziv))
else:
retexec = cins.execute("Insert into Nastavitve Values (?, ?)", ("prof_"+naziv, potnik + "," + baza))

print "Total changes", retexec.connection.total_changes #this returns 1

c2 = conn.cursor()
c2.execute("Select nast_koda from Nastavitve where nast_koda = 'prof_%(naziv)s'" % {"naziv": naziv})
dRez2 = c2.fetchone()
#Test if new value is in the table before commit
print "PredComm", dRez2#I always get the rasult here

ret = conn.commit()
c1 = conn.cursor()
c1.execute("Select nast_koda from Nastavitve where nast_koda = 'prof_%(naziv)s'" % {"naziv": naziv})
dRez1 = c1.fetchone()
#Test if new value is in the table after commit
print "PoComm", dRez1#Sometimes happens that dRez1 == None
print "Total changes", retexec.connection.total_changes #this returns 1

self.Osvezi_profile()
pass
[/code]

I call function OnSaveProfile when I click some button on form. This code is meant to insert or update some data in table 'Nastavitve'. It works most of time, but sometimes the data just doen't inserts into table. When I click the button again, then it works fine (sometimes not on first click, but on second, third, ...). There is always data in table before commit. After commit it is sometimes gone. It looks like that instead of commit sqlite3 executes rollback.

I've done integrity_check and it returned 'ok'. I have PRAGMA synchronous set to 2-FULL. I've tried different isolation_level-s with no success.

I'm having trouble only on windows mobile device. When I run the application on desktop PC it always works fine.

So is this a bug on Windows Mobile or am I doing something wrong?

Thanks in advance for answer.


Sign In or Register to comment.