2009-12-30 6 views

cevap

10

Bir try, except açıklamada sarabilirdiniz:

>>> conn = sqlite3.connect('mydb') 
>>> conn.close() 
>>> try: 
... resultset = conn.execute("SELECT 1 FROM my_table LIMIT 1;") 
... except sqlite3.ProgrammingError as e: 
... print e 
Cannot operate on a closed database. 

Bu shortcut specific to sqlite3 dayanır.

+7

yöntem aklı başında, ama 'Bir daha hafif' mytable LIMIT GELEN one_column SEÇ şeyler yapabiliriz, mytable' SELECT * FROM 1' yapıyor kaçının. Birincisi korkunç derecede verimsiz, küçük bir veritabanınız var. –

+0

teşekkürler @pitrou, bunu dikkate almak için güncellendi. – bernie

+3

@AntoineP. SQLite ile diğer veritabanlarını karıştırıyorsunuz. SQLite tarafından yapılan iş miktarında bir fark yoktur. Bir sorgu için tüm sonuçları hesaplamaz - bunun yerine, ilk sonuç satırını vermek için mümkün olan en az miktarda işi yapar. İkinci sonuç satırı sadece siz sorduğunuzda çalışır. Sonuç olarak sınırın bir etkisi yoktur. Her durumda daha iyi bir sorgu şemaya bağlı olmayan bir sorgudur - örn. PRAGMA user_version. –

0

Nasıl bağlantısı ve imleç kapalı kesinlikle garanti yapma konusunda?

Sen garanti edemez bir devlet temelli programı olabilir ancak doğru zamanda() yakın çağırır.

Veya close() bir geçiş uygulaması olan diğer nesneler onları sarın. Veya bir _isclosed üyesini close() tarafından belirlenen ve isclosed() tarafından erişilen ekleyin.