pythontr.com
from pysqlite2 import dbapi2 as sqlite DATABASE = '/home/kullanici/databases/test.db' try: cnn = sqlite.connect(DATABASE, timeout=15) crs = cnn.cursor() # tablodan okuma sql = 'SELECT * FROM tablo' crs.execute(sql) view = crs.fetchall() for row in view: alan0 = row[0] alan1 = row[1] print alan1, alan2 # tabloda degisiklik sql = 'UPDATE tablo SET alan1 = deger' crs.execute(sql) cnn.commit() crs.close() cnn.close() return True except: return False
. Değişikliklerin ne zaman işleneceği (Isolation Level) cnn = sqlite.connect(DATABASE, isolation_level=ISOLATION_LEVEL) veya cnn.isolation_level = ISOLATION_LEVEL ISOLATION_LEVEL şu değerleri alabilir: None -> AutoCommit yapar 'DEFERRED' -> BEGIN ile kilitleme yapılmaz. İlk okuma ile SHARED lock yapılır; başkaları okuma yapabilir ama yazma yapamaz İlk yazma ile RESERVED lock yapılır; SHARED locklar bitince yazma işlemini yapar 'IMMEDIATE' -> Transaction başlar başlamaz, RESERVED lock yapılır Transaction esnasında diğer processler okuma yapabilir ama yazma yapamaz 'EXCLUSIVE' -> BEGIN ile EXCLUSIVE lock yapılır Transaction bitmeden başka processler okuma veya yazma yapamaz . Değişiklikler geri alınacaksa cnn.rollback() . Hafızada geçici dosya oluşturulacaksa... Geçici dosyayi sadece mevcut connection görür. cnn.connect(':memory:') . Sorgular icin timeout suresi (saniye) cnn.connect(DATABASE, timeout=15.0) . Asenkron modda çalışmak için... Verilerin diske yazılması beklenmez. RAM'deki veritabani ile çalışırken uygun. crs.execute('PRAGMA synchronous=OFF') . White-Ahead Log (WAL) journaling modu için veritabanı oluşturulurken bir kere... PRAGMA journal_mode = WAL; . veritabaninde resim tutmak sqlite3 resim.db "CREATE TABLE resim (id INTEGER PRIMARY KEY, res BLOB);" sqlite3 resim.db "INSERT INTO resim (res) VALUES (\"$(base64 -w0 resim.jpg)\");" sqlite3 resim.db "SELECT res FROM resim WHERE id=1;" | base64 -w0 -d > tmp.jpg
Yorumlar