OMEGA2+ üzerinde Sqlite3 uygulaması yapalım.

Merhaba.
Bu yazıda Omega2+ üzerinde veritabanı hzırlama, veri girişi uygulaması yapalım. Veri girişinden sonra parametreli sorgulama, silme nasıl yapılır onları incelemeye çalışalım.

Python programlama dilinin Omega2+ üzerine kurulması ile birlikte Sqlite3 veritabanı da kuruluyor. Bence kibrit kutusu bütüklüğünde bir devre üzerinde sorgu yazabileceğiniz bir veritabanı kullanmak müthiş birşey.

Gerekli malzemeler:
Veritabanı için sorgu oluşturma / izleme yapmanıza yardımcı olacak SQLiteDbBrowser: https://sqlitebrowser.org adresinden indirebilirsiniz.



Pythonda veritabanı işlemi için birkaç komuta ihtiyacınız var. Bunlardan ilki veritabanı ve os (işletim sistemi) kütüphanesini import etme ve ikincisi veritabanı dosyası için yol tanımı:

import sqlite3 as db
import os
dbFile="/home/db/dbArts.sqlite"

Yukardaki tanım sadece bir string tanımıdır.

Burada dikkat etmemiz gereken önemli bir nokta var. Veritabanını kodla oluşturacağız ama yolunu kendimiz oluşturacağız. /home/db klasörlerinin Omega2+ üzerinde bulunması gerekir.

Bundan sonra veritabanı dosyamız var mı diye kontrol edeceğiz. Bunu bir fonksiyon içinde yaparsak kullanımı daha kolay olur.

def dbKontrol():
dosyaMevcut=os.path.exists(dbFile)
if not dosyaMevcut:
dbOlustur()
else:
print("db dosyası var.\r\n")

dbKontrol() fonksiyonu ile dbFile ile tanımladığımız dosya yerinde var mı sorgusu yapıyoruz.
var ise bildirim veriyor, yok ise dbOlustur() fonksiyonunu çağırıyoruz.

def dbOlustur():
vt=db.connect(dbFile)
im=vt.cursor()
im.execute("""
CREATE TABLE `ogrenci` 
(`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`adi` TEXT,
`soyadi` TEXT,
`ogrNo` INTEGER,
`sinif` TEXT);""")
vt.commit()
vt.close()
print("Dosya oluşturuldu")

vt isimli değişken veritabanı işlemleri için bağlantı nesnesi.
im ise işlecimiz. 

Dikkat edilmesi gereken nokta veritabanı ile ilgili işlemin gerçekleştiği satır vt.commit() satırıdır.
Son olarak açtığımız veritabanını vt.close() ile kapatıyoruz.

Veritabanı  oluştururken bunu kendiniz yazarak yapabilirsiniz ama hata yapma riskiniz yüksek bunun için SQLiteDbBrowseri kullanın.

Yeni veritabanı ile veritabanı ismi verip kaydediyoruz.
Tablo ismi verip fieldları oluşturmaya başlıyoruz.


Daha sonra bizim için asıl önemli olan kısım olan alt taraftaki sql kodlarını kopyalıyoruz.

CREATE TABLE `deneme` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`adi` TEXT,
`soyadi` TEXT,
`ogrNo` INTEGER
);

dbOlustur fonksiyonu içindeki im.execute="" satırına bu kodları yapıştırırsak bu tablo ve fieldları oluşturan bir db elde etmiş oluruz.
im.execute="CREATE TABLE `deneme` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`adi` TEXT,
`soyadi` TEXT,
`ogrNo` INTEGER
);"


Kayıt girmek için veriGir fonksiyonunu:
def veriGir(adi,soyadi,ogrNo,sinif):
with db.connect(dbFile) as vt:
im=vt.cursor()
sorguText="""INSERT INTO 
ogrenci(adi,soyadi,ogrNo,sinif) 
values('{}','{}','{}','{}') """.format(adi,soyadi,ogrNo,sinif)
#print (sorguText)
im.execute(sorguText)
vt.commit()
print("Veritabanına eklendi")

kullanmak için de:

veriGir("Ziya","Başar",155,"10-B")

Parametreli sorgu için paramSorgu() fonksiyonunu kullanabiliriz:

def paramSorgu(adi,soyadi,ogrNo,sinif):
global veri
with db.connect(dbFile) as vt:
im=vt.cursor()
#sorguText="""select * from ogrenci where adi like'%{}%'""".format(adi)
if adi!="":
sorguText="""select * from ogrenci where adi='{}'""".format(adi)
if soyadi!="":
sorguText="""select * from ogrenci where soyadi='{}'""".format(soyadi)
if ogrNo!="":
sorguText="""select * from ogrenci where ogrNo='{}'""".format(ogrNo)
if sinif!="":
sorguText="""select * from ogrenci where sinif='{}'""".format(sinif)
if adi=="" and soyadi=="" and ogrNo=="" and sinif=="":
sorguText="""select * from ogrenci"""
im.execute(sorguText)
veri=im.fetchall()
vt.commit()
if len(veri)==0:
return "Sorgu Sonucu Boş"
else:
return veri

fonksiyonu kullanmak için de:

paramSorgu(adi,soyadi,ogrNo,sinif)
for i in veri:
print("kayıt: {}".format(i))

yapısını kullanabiliriz.


Veri Silmek için :

def paramSil(adi):
with db.connect(dbFile) as vt:
im=vt.cursor()
sorguText="""delete from ogrenci where adi='{}'""".format(adi)
im.execute(sorguText)
vt.commit()

fonksiyonu:
adi=input("Öğrenci adı giriniz: ")
paramSil(adi)

şeklinde kullanabiliriz.

sqlite3'ü sadece Omega2+ üzerinde değil kendi bilgisayarınızda da küçük bir değişiklikle kullanabilirsiniz. Değiştirmeniz gereken tek nokta windows işletim sistemi için dbFile tanımıdır.
Bunu da 

dbFile="c:/deneme/dbdeneme.sqlite"

şeklinde kolayca yapabilirsiniz.

Kolay gelsin.