- Yükleme aptitude install sqlite3 python-pysqlite2 - Veritabani oluşturma sqlite test.db < test.sql sqlite test.db - sqlite3 shell komutları .help yardım .quit sqlite3 shell'den çıkış .databases mevcut veritabanlarını listeler .tables mevcut tabloları listeler .indices tablo tablo için mevcut indeksleri listeler .schema [tablo] tablo yapısını gösterir. tablo belirtilmezse bütün tabloları gösterir .output FILE çıktıları FILE adlı dosyaya yazar .output stdout çıktıları ekrana yazar .show bazı ayarların değerini gösterir .header on|off çıktılarda başlık olacak mı .mode column|list|line çıktı formatı .separator "str" çıktılarda alanları "str" ifadesi ile ayırır .mode list için geçerli sqlite3 shell'e girmeden de çıktı alınabilir sqlite3 test.db 'SELECT * FROM tablo;' sqlite3 test.db .schema - pysqlite2 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