По-моему, вам тут глупости говорят. SQLite вроде как давно уже по умолчанию поддерживает многопоточный режим, поэтому никаких проблем с конкурентным доступом быть не должно. Вот такой простой тест:
#!/usr/bin/env python
# -* coding: utf-8 -*-
import sqlite3
import time
import random
import sys
conn = sqlite3.connect('example.db')
c = conn.cursor()
proccess = sys.argv[1]
for i in range(10):
c.execute("INSERT INTO test VALUES (?, ?)", ["process %s" % proccess, random.randint(0, 10000)])
conn.commit()
time.sleep(random.randint(1, 8))
c.execute("select * from test")
print "result = "
for i in c.fetchall():
print i
conn.close()
запускаем этот скрипт одновременно в двух разных терминалах, эмулируя одновременную работу двух программ,
python test_insert.py 1
python test_insert.py 2
получаем 20 вставок в БД
(u'process 1', 3787.0)
(u'process 1', 6370.0)
(u'process 2', 2569.0)
(u'process 2', 6926.0)
(u'process 1', 5498.0)
(u'process 2', 275.0)
(u'process 1', 2108.0)
(u'process 1', 4542.0)
(u'process 2', 3892.0)
(u'process 1', 3357.0)
(u'process 2', 6789.0)
(u'process 2', 3863.0)
(u'process 1', 9464.0)
(u'process 2', 2749.0)
(u'process 1', 1060.0)
(u'process 1', 3435.0)
(u'process 1', 9713.0)
(u'process 2', 7232.0)
(u'process 2', 7931.0)
(u'process 2', 812.0)
Или это не то, что нужно топикстартеру?