SORU
26 Aralık 2008, Cuma


Python sqlite3 ve eşzamanlılık

"" Modülü. iş parçacığı kullanan bir Python programı var Bir kez her saniye, benim program web üzerinden bazı verileri getirir yeni bir evre başlar, ve benim sabit disk bu verileri saklar. Sqlite3 bu sonuçları saklamak için kullanmak istiyorum, ama bunu hemen yapamam. Sorun aşağıdaki satırı ilgili gibi görünüyor:

conn = sqlite3.connect("mydatabase.db")
  • Eğer her iş parçacığı içinde bu kod satırı, bir OperationalError veritabanı dosyası kilitli olduğunu söylüyor. Bu başka bir iş parçacığı veritabanım var anlamına geliyor sanırım.sqlite3 bağlantısı üzerinden açık db ve kilitledi.
  • Eğer bu kod satırı, ana program ve geçiş bağlantı nesnesi (conn) her iş parçacığı, bir ProgrammingError söyleyerek SQLite nesnelerin bir iş parçacığı sadece kullanılan, aynı iş parçacığı.

Daha önce CSV dosyaları tüm sonuçları saklamak olduğumu ve bu dosya kilitleme sorunların hiçbiri yoktu. Umarım bu sqlite ile mümkün olacaktır. Herhangi bir fikir?

CEVAP
24 Mayıs 2010, PAZARTESİ


Sanılanın aksine, sqlite3 daha yeni sürümleriyapınbirden çok iş parçacığı erişim desteği.

Bu isteğe bağlı bir anahtar değişken check_same_thread etkinleştirilebilir:

sqlite.connect(":memory:", check_same_thread=False)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • George McCarron

    George McCar

    29 Mayıs 2013
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • MrSuicideSheep

    MrSuicideShe

    9 NİSAN 2010