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

  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • RickardRick

    RickardRick

    9 Mart 2007
  • RocketJump

    RocketJump

    22 ŞUBAT 2006