To check if SQLite can be used by two processes at the same time, I tried this:
script1.py (database update every 1 second)
import sqlite3, time
conn = sqlite3.connect('test.db')
conn.execute("CREATE TABLE IF NOT EXISTS kv (key text, value text)")
for i in range(1000):
conn.execute('REPLACE INTO kv (key, value) VALUES (?,?)', (1, i))
conn.commit()
print i
time.sleep(1)
script2.py (database query every 1 second)
import sqlite3, time
conn = sqlite3.connect('test.db')
c = conn.cursor()
while True:
c.execute('SELECT value FROM kv WHERE key = ?', (1,))
item = c.fetchone()
print item
time.sleep(1)
I started script1.py
, and then script2.py
, and let them work at the same time. I was hoping that I script2.py
would know (although I don’t know how to do it!) That the database was updated and that it needed to restart part of it. But unfortunately, I get this in script2.py
:
(u'0',)
(u'0',)
(u'0',)
(u'0',)
(u'0',)
(u'0',)
(u'0',)
i.e. he does not receive updates script1.py
.
Is there an easy way to make this work with SQLite?