Pythontr

husonet | Tarih: 24.04.2011

(pysqlite2) python sqllite kütüphanesi

python SQLite kütüphanesi örnekleri

	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



Tips
	. 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