Re: [pysqlite] PySqlite threading concurrency issue
"Edzard Pasma" <[email protected]> Sat, 13 Sep 2008 00:41:11 -0700
| Newsgroups | gmane.comp.python.db.pysqlite.user |
|---|---|
| Message-ID | <[email protected]> |
Got it, it is the GIL issue reported by Ben Cottrell. --- [email protected] wrote: From: [email protected] To: list-pysqlite-FR6EJeJVuqdwc357pe9rcyQmJico6nz3epZhswDD4dQ@public.gmane.org Subject: [pysqlite] PySqlite threading concurrency issue Date: Fri, 12 Sep 2008 16:08:04 -0500 Hello all, I've ran accross a problem when I have multiple threads in python attempting to select/update the same database. I get the dreaded "database is locked" error. The following bit of code reproduces the problem fairly reliably (within about 45 seconds on my machine), and I was wondering if anyone had any insight into what might be going on? from pysqlite2 import dbapi2 as sqlite3 import datetime import thread, time, os db = 'test.db' def aa(): while True: conn = sqlite3.connect(db, timeout=10) conn.isolation_level = None c = conn.cursor() c.execute('SELECT a from t1 where b=1') print list(c) #conn.commit() conn.close() time.sleep(10) def bb(): while True: conn = sqlite3.connect(db, timeout=10) conn.isolation_level = 'EXCLUSIVE' c = conn.cursor() c.execute('UPDATE t1 set a=? where b=0', (datetime.datetime.now(),) ) #conn.commit() conn.close() time.sleep(.1) try: os.unlink('test.db') except OSError: pass with sqliteutil.cursor(db, isolation_level = 'EXCLUSIVE', timeout=60) as c: c.execute('create table t1(a real, b real)') c.executemany('insert into t1 values(?, ?)', ( (0, 0) for i in xrange(10000)) ) c.execute('insert into t1 values(0, 1)') thread.start_new_thread(bb, ()) aa() When I run it, I get the following: $ python test_lock.py [(0.0,)] Traceback (most recent call last): File "test_lock.py", line 59, in <module> aa() File "test_lock.py", line 14, in aa c.execute('SELECT a from t1 where b=1') pysqlite2.dbapi2.OperationalError: database is locked Any help would be much appreciated. Thanks. _______________________________________________ list-pysqlite mailing list list-pysqlite-FR6EJeJVuqdwc357pe9rcyQmJico6nz3epZhswDD4dQ@public.gmane.org http://itsystementwicklung.de/cgi-bin/mailman/listinfo/list-pysqlite