Python SQLite

Anonim6

Yeni üye
29 Şub 2012
0
5
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.

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, u’Isimsiz Arkadas’, u’2016-01-20 20:14:00’)
(2, u’Isimli Arkadas’, u’2016-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, u’Mudur’, u’2016-01-20 20:14:00’)
(2, u’Isimli Arkadas’, u’2016-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, u’Isimli Arkadas’, u’2016-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:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.