Python3 SQLite
Python programlama dilinin en onemli ozelliklerinden birisi, Sqlite veritabani programlama dilini kendi icerisinde barindiran bir yapiya sahip olmasidir. Bu avantaji ile Python, veritabani iceren uygulamalari gelistirmek acisindan kullanisli dillerden bir tanesidir. Sqlite; Text, Integer, Numeric, None ve Date gibi veri tiplerini destekler. Bugun sizlerle birlikte Python programlama dilinin 3.4.3 versiyonu ile kucuk bir Sqlite uygulama ornegi yapacagiz. Idle3 adli uygulamamiz yardimi ile Python3 konsolumuzu baslatiyoruz.
Yukaridaki komut yardimi ile, sqlite3 modulumuzu _sql olarak uygulamaya tanimladik, _sql.version komutumuz ile de versiyonumuzun 2.6.0 oldugu bilgisine ulastik. Simdi bir veritabani olusturalim:
_dbyolu adli degiskenimiz ile olusturulacak olan veritabaninin ismini ve dizinini tanimladik. Daha sonra _baglanti adli bir komut olusturduk. Bu komutta, sqlite3 modulumuzun _dbyolu dizinindeki Ders.db veritabanina baglanmasini soyledik, daha sonra ise _olustur adli bir komut olusturup, _baglanti uzerinden bir imlec olusturmasini soyledik. Boylelikle artik veritabaninda islem yapabilecegiz. _olustur.execute() komutunu kullanarak, veritabaninda Ders adli bir tablo olusturduk, tablonun icinde de id - Int, isim - Str, tarih - date kolonlarini yarattik. _baglanti.commit() komutu ile degerleri veritabanina isledik, _olustur.close() ile de imleci kaldirdik.
Not: Veritabanini herhangi bir dizinde tanimlayacagiz diye bir kaide yok. Istersek, RAM uzerinde gecici bir veritabani da olusturabilirdik. Bunun icin _sql.connect(:memory:) dememiz yeterli olacakti. Simdi konsolumuzu kapatip, herhangi bir text editor veya idle uzerinden bir proje olusturarak ilerleyelim. Asagidaki kod orneginde, bir veritabani olusturup veritabanina veri ekleyecegiz, daha sonra ekledigimiz veriyi okuyacagiz:
Yukaridaki ornekte, verileri _veriler listesinde tanimladik. Daha sonra _veriler icinde bulunan her veriyi, for dongusu icerisinde yerlestirdik. Verileri de _olustur.commit() ile veritabanina yazdik. Veritabaninda bulunan her veriyi sectik, tekrardan for dongusu uzerinden ekrana yazdirdik, sonra imleci kaldirdik. Elde edecegimiz cikti su sekilde olacaktir:
Sirada veritabaninda bulunan herhangi bir kaydi guncellemek var. Bunun icin SQL veritabani dilinde bulunan UPDATE komutunu kullanacagiz. Ornegin, sirketimizin muduru Isimsiz Arkadas verisine bir isim vermemizi istiyor, ismini Mudur yapmamizi istiyor. Bunun icin asagidaki kucuk uygulamayi kullanacagiz:
_guncelle diye bir string olusturduk. Bu stringi komuta uyarladigimiz zaman, Ders veritabaninda id numarasi 1 olan her ismi Mudur yapmasini soyledigimizi gorecegiz. Komutu calistirip, yeni veritabanini ekrana yazdirmasini soyledik. Bu kucuk uygulamamizdan sonra, uygulamayi calistirinca karsimiza asagidaki cikti gelecektir:
Sqlite ile veritabanini guncellemeyi ogrendigimize gore, sirada veri silme var. Bunun icin, yukaridaki yazdigimiz kod orneginde degistirmemiz gereken kisim UPDATE yerine DELETE yapmak olacaktir. Yani yazdigimiz uygulama asagidaki seklini alacaktir:
_guncelle adli stringimizi, diger uygulamadan farkli olarak biraz degistirdik. Silmek icin sadece id degerini tanimlayip, Ders veritabaninda olan 1 numarasina sahip butun verileri silmesini soyledik Boylelikle uygulamayi calistirdigimiz zaman cikti asagidaki gibi olacaktir:
Sqlite uzerinde, SQL veritabani komutlarinin cogunun nasil isledigini ogrendik. Bunlardan bir tanesi de, verileri secici olarak listelemektir. Yani herhangi bir sinir belirleriz, bu sinira uyan her veri listelenir. Bunun icin, okuma yaptigimiz kod parcasinin sonuna asagidaki komutlari eklememiz yeterli olacaktir, bu komutlar sonrasinda veritabaninda id degeri 2 den kucuk olan her veri listelenecektir:
Python programlama dilinin en onemli ozelliklerinden birisi, Sqlite veritabani programlama dilini kendi icerisinde barindiran bir yapiya sahip olmasidir. Bu avantaji ile Python, veritabani iceren uygulamalari gelistirmek acisindan kullanisli dillerden bir tanesidir. Sqlite; Text, Integer, Numeric, None ve Date gibi veri tiplerini destekler. Bugun sizlerle birlikte Python programlama dilinin 3.4.3 versiyonu ile kucuk bir Sqlite uygulama ornegi yapacagiz. Idle3 adli uygulamamiz yardimi ile Python3 konsolumuzu baslatiyoruz.
Kod:
[COLOR="White"]>>> import sqlite3 as _sql
>>> _sql.version
2.6.0
>>>[/COLOR]
Yukaridaki komut yardimi ile, sqlite3 modulumuzu _sql olarak uygulamaya tanimladik, _sql.version komutumuz ile de versiyonumuzun 2.6.0 oldugu bilgisine ulastik. Simdi bir veritabani olusturalim:
Kod:
[COLOR="white"]>>> _dbyolu = "/home/par4d0x1d/Desktop/Ders.db"
>>> _baglanti = _sql.connect(_dbyolu)
>>> _olustur = _baglanti.cursor()
>>> _olustur.execute(CREATE TABLE Ders(id INTEGER, isim TEXT, tarih DATE))
>>> _baglanti.commit()
>>> _olustur.close()
>>>[/COLOR]
_dbyolu adli degiskenimiz ile olusturulacak olan veritabaninin ismini ve dizinini tanimladik. Daha sonra _baglanti adli bir komut olusturduk. Bu komutta, sqlite3 modulumuzun _dbyolu dizinindeki Ders.db veritabanina baglanmasini soyledik, daha sonra ise _olustur adli bir komut olusturup, _baglanti uzerinden bir imlec olusturmasini soyledik. Boylelikle artik veritabaninda islem yapabilecegiz. _olustur.execute() komutunu kullanarak, veritabaninda Ders adli bir tablo olusturduk, tablonun icinde de id - Int, isim - Str, tarih - date kolonlarini yarattik. _baglanti.commit() komutu ile degerleri veritabanina isledik, _olustur.close() ile de imleci kaldirdik.
Not: Veritabanini herhangi bir dizinde tanimlayacagiz diye bir kaide yok. Istersek, RAM uzerinde gecici bir veritabani da olusturabilirdik. Bunun icin _sql.connect(:memory:) dememiz yeterli olacakti. Simdi konsolumuzu kapatip, herhangi bir text editor veya idle uzerinden bir proje olusturarak ilerleyelim. Asagidaki kod orneginde, bir veritabani olusturup veritabanina veri ekleyecegiz, daha sonra ekledigimiz veriyi okuyacagiz:
Kod:
[COLOR="white"]import sqlite3 as _sql
_veriler = [(1, Isimsiz Arkadas, 2016-01-20 20:14:00),
(2, Isimli Arkadas, 2016-01-20 20:15:00)];
_dbyolu = "/home/par4d0x1d/Desktop/Ders.db";
_baglanti = _sql.connect(_dbyolu);
_olustur = _baglanti.cursor();
for veri in _veriler:
_olustur.execute(INSERT INTO Ders VALUES(?, ?, ?), veri);
_baglanti.commit();
print(Sira,Isim,Tarih);
_olustur.execute(SELECT * FROM Ders);
for yazdir in _olustur:
print(yazdir);
_olustur.close();[/COLOR]
Yukaridaki ornekte, verileri _veriler listesinde tanimladik. Daha sonra _veriler icinde bulunan her veriyi, for dongusu icerisinde yerlestirdik. Verileri de _olustur.commit() ile veritabanina yazdik. Veritabaninda bulunan her veriyi sectik, tekrardan for dongusu uzerinden ekrana yazdirdik, sonra imleci kaldirdik. Elde edecegimiz cikti su sekilde olacaktir:
Kod:
[COLOR="white"]par4d0x1d@par4d0x1d ~/Desktop $ python Ders.py
(Sira, Isim, Tarih)
(1, uIsimsiz Arkadas, u2016-01-20 20:14:00)
(2, uIsimli Arkadas, u2016-01-20 20:15:00)[/COLOR]
Sirada veritabaninda bulunan herhangi bir kaydi guncellemek var. Bunun icin SQL veritabani dilinde bulunan UPDATE komutunu kullanacagiz. Ornegin, sirketimizin muduru Isimsiz Arkadas verisine bir isim vermemizi istiyor, ismini Mudur yapmamizi istiyor. Bunun icin asagidaki kucuk uygulamayi kullanacagiz:
Kod:
[COLOR="white"]import sqlite3 as _sql
_dbyolu = "/home/par4d0x1d/Desktop/Ders.db";
_baglanti = _sql.connect(_dbyolu);
_olustur = _baglanti.cursor();
_guncelle = UPDATE Ders SET
isim = "Mudur" WHERE id = 1 ;
_olustur.execute(_guncelle);
print(Sira,Isim,Tarih);
_olustur.execute(SELECT * FROM Ders);
for yazdir in _olustur:
print(yazdir);
_olustur.close();[/COLOR]
_guncelle diye bir string olusturduk. Bu stringi komuta uyarladigimiz zaman, Ders veritabaninda id numarasi 1 olan her ismi Mudur yapmasini soyledigimizi gorecegiz. Komutu calistirip, yeni veritabanini ekrana yazdirmasini soyledik. Bu kucuk uygulamamizdan sonra, uygulamayi calistirinca karsimiza asagidaki cikti gelecektir:
Kod:
[COLOR="white"]par4d0x1d@par4d0x1d ~/Desktop $ python Ders.py
(Sira, Isim, Tarih)
(1, uMudur, u2016-01-20 20:14:00)
(2, uIsimli Arkadas, u2016-01-20 20:15:00)[/COLOR]
Sqlite ile veritabanini guncellemeyi ogrendigimize gore, sirada veri silme var. Bunun icin, yukaridaki yazdigimiz kod orneginde degistirmemiz gereken kisim UPDATE yerine DELETE yapmak olacaktir. Yani yazdigimiz uygulama asagidaki seklini alacaktir:
Kod:
[COLOR="white"]import sqlite3 as _sql
_dbyolu = "/home/par4d0x1d/Desktop/Ders.db";
_baglanti = _sql.connect(_dbyolu);
_olustur = _baglanti.cursor();
_guncelle = DELETE FROM Ders WHERE
id = 1 ;
_olustur.execute(_guncelle);
print(Sira,Isim,Tarih);
_olustur.execute(SELECT * FROM Ders);
for yazdir in _olustur:
print(yazdir);
_olustur.close();[/COLOR]
_guncelle adli stringimizi, diger uygulamadan farkli olarak biraz degistirdik. Silmek icin sadece id degerini tanimlayip, Ders veritabaninda olan 1 numarasina sahip butun verileri silmesini soyledik Boylelikle uygulamayi calistirdigimiz zaman cikti asagidaki gibi olacaktir:
Kod:
[COLOR="white"]par4d0x1d@par4d0x1d ~/Desktop $ python Ders.py
(Sira, Isim, Tarih)
(2, uIsimli Arkadas, u2016-01-20 20:15:00)[/COLOR]
Sqlite uzerinde, SQL veritabani komutlarinin cogunun nasil isledigini ogrendik. Bunlardan bir tanesi de, verileri secici olarak listelemektir. Yani herhangi bir sinir belirleriz, bu sinira uyan her veri listelenir. Bunun icin, okuma yaptigimiz kod parcasinin sonuna asagidaki komutlari eklememiz yeterli olacaktir, bu komutlar sonrasinda veritabaninda id degeri 2 den kucuk olan her veri listelenecektir:
Kod:
[COLOR="white"]_secici = SELECT * FROM Ders WHERE id < 2 ;
_olustur.execute(_secici);
print(_olustur.fetchall());[/COLOR]
Moderatör tarafında düzenlendi: