# Python SQLite Veritabanı
Python Sqlite veritabanı işlemlerini öğreniyoruz.
SQLite, hafif ve disk tabanlı bir veritabanı çözümüdür. Herhangi bir ayrı sunucu işlemine gerek kalmadan ve basit standart sql söz dizimi ile cihazların yerel hafızalarında bile kullanılabilir. Birçok dil ile kullanımı olduğu gibi Python ile de rahatlıkla entegre dilebilir.
- Bir modül olarak projenize rahatlıkla dahil edebilirsiniz
- Ayrı bir yazılım veya sunucu kurmanıza gerek yoktur.
- Veritabanını diskinizde saklayabilirsiniz ve kolaylıkla transfer edebilirsiniz.
- Söz dizimi oldukça basittir, rahat öğrenilebilir.
- Açık kaynak kodludur, istediğiniz düzenlemeleri yapabilirsiniz.
SQLite her ne kadar basit bir veritabanı gibi gözüksede oldukça güçlü bir veritabanıdır ve kullanımı yaygındır.
Python ile SQLite veritabanı üzerinde yapacağımız işlemleri bu başlık altında sırasıyla işleyeceğiz. Fakat öncesinde
sqlite3
modülünü projenize dahil etmelisiniz.import sqlite3
Ardından işlemlerimize geçebiliriz.
İlk olarak yeni bir veritabanı oluşturmak veya mevcut bir veritabanına bağlanmak için
connect()
fonksiyonunu kullanmalıyız. Bağlanacağımız veritabanı mevcut değilse otomatik olarak oluşturulacaktır.db = sqlite3.connect('veritabanı_adı.db')
SQLite veritabanı uzantısı herhangi bir terim olabilir. Genel olarak
db
, db3
, sqlite
ve sqlite3
kullanılır ama siz başka bir isimde seçebilirsiniz. (Örneğin veritabani.elma)Eğer isterseniz veritabanını tam adres göstererek de oluşturabilirsiniz.
db = sqlite3.connect('/home/kerteriz/test.sqlite') #GNU/Linux
db = sqlite3.connect('c:/users/kerteriz/desktop/test.sqlite') #Windows
Aynı şekilde RAM veya sabit disk üzerinde geçici bir veritabanı da oluşturabilirsiniz.
db = sqlite3.connect(':memory:') # RAM üzerinde geçici db
db = sqlite3.connect('') # HDD üzerinde geçici db
Daha çok test ortamları için kullanılan geçici veritabanları program sonlandırıldığında veya veritabanı bağlantısı kapatıldığında silinecektir.
Yeni oluşturduğumuz veya mevcut olan bir veritabanına bağlandıktan sonra üzerinde işlem yapabilmek için
cursor()
fonksiyonu ile imleç oluşturmamız gerekiyor.imlec = db.cursor()
SQL komutlarını oluşturabilmek için imlecimizle beraber
execute()
fonksiyonunu kullanmalıyız. Böylelikle tüm SQL komutlarını veritabanımız üzerinde çalıştırabiliriz.imlec.execute("CREATE TABLE ogrenciler(isim, yas)")
Artık veritabanımızda ogrenciler isimli ve iki sütunlu (isim,yas) bir tablo oluşturmuş olduk. Daha uzun komutlarınızı daha rahat okuyabilmek için
"""
işareti ile birden fazla satırda kullanabilirsiniz.imlec.execute(""""CREATE TABLE ogrenciler
(isim, yas, sinif, veli, telefon, email)""")
Ayrıca daha rahat bir kullanım için sql komutlarınızı bir değişkene atayarak
execute()
fonksiyonuna da gönderebilirsiniz.komut = "CREATE TABLE ogrenciler(isim, yas)"
imlec.execute(komut)
Yukarıdaki yöntemlerle tablo oluşturduğunuzda tekrar aynı komutu çalıştırırsanız zaten bir kere oluşturulduğu için "sqlite3.OperationalError: table ogrenciler already exists" hatası verecektir.
Uyarıda ki hatayı engellemek için tablo oluşturma komutunu
IF NOT EXISTS
ile güncelleyiniz. Böylece tablo zaten mevcutsa tekrardan oluşturulmaya çalışılmayacaktır.komut = "CREATE TABLE IF NOT EXISTS ogrenciler(isim, yas)"
imlec.execute(komut)
Tablomuza yeni veriler girebilmek için sql
INSERT
komutunu kullanmalıyız.komut = """INSERT INTO ogrenciler VALUES ('Yunus', 25)"""
imlec.execute(komut)
Aynı mantıkla komutumuzu yazdık ve imleç ile veritabanına işlettik. Fakat veritabanımızı kontrol ettiğinizde yeni verilerin eklenmemiş olduğunu göreceksiniz. Eğer yapılan değişikliklerin veritabanına uygulanmasını istiyorsanız
commit()
fonksiyonunu çalıştırmanız gerekiyor.db.commit()
Artık yeni verileri tablonuzda görebilirsiniz.
Tablomuza örnek veriler ekledikten sonra bu verileri seçmek için
SELECT
komutunu kullanırız.isim | yas |
Yunus | 24 |
Ahmet | 30 |
Deniz | 15 |
Örnek tablomuzdaki tüm verileri çekmek için öncelikle sql komutumuzu çalıştıralım ve ardından
fetchall()
fonksiyonu ile tüm verileri değişkenimize atalım. Ardından tüm verilerimiz demet halinde dönecektir.komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
veriler = imlec.fetchall()
print(veriler) # [('Yunus', 25), ('Ahmet', 30), ('Deniz', 15)]
Tüm satırları çekmek istediğimizde
for
terimini de kullanabiliriz. komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
for veri in imlec:
print(veri)
# ('Yunus', 25)
# ('Ahmet', 30)
# ('Deniz', 15)
Eğer tek tek satır çekmek istiyorsanız bu sefer
fetchone()
fonksiyonunu kullanmalısınız. fetchone()
fonksiyonu her çalıştığında sıradaki satırı çeker.komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
print(imlec.fetchone()) # ('Yunus', 25)
print(imlec.fetchone()) # ('Ahmet', 30)
print(imlec.fetchone()) # ('Deniz', 15)
Çektiğiniz tek bir satırın sütunlarına ulaşmak için demet elemanlarını kullanabiliriz.
komut = """SELECT * FROM ogrenciler WHERE yas = {}""".format(15)
imlec.execute(komut)
veri = imlec.fetchone()
print("İsim: " + str(veri[0])) # İsim: Deniz
print("Yaş: " + str(veri[1])) # Yaş: 15
Tümünü veya tekini çekmek yerine belirlediğiniz adette satır çekmek için
fetchmany()
fonksiyonunu kullanabilirsiniz.komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
veriler = imlec.fetchmany(2)
print(veriler) # [('Yunus', 25), ('Ahmet', 30)]
Adet sayısınca çekeceğiniz veriler üzerinde
fetchone()
fonksiyonu ile gezerken for
döngüsünü de kullanabiliriz.komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
for veri in range(2):
print(imlec.fetchone())
# ('Yunus', 25)
# ('Ahmet', 30)
Elimizdeki tabloda yer alan veriler üzerinde bir güncelleme yapmak istediğimizde
UPDATE
sql komutunu kullanırız. Örnek verirsek elimizde aşağıdaki gibi bir tablo olduğunu farzedelim.isim | yas |
Yunus | 25 |
Özlem | 15 |
Ahmet | 30 |
Örnek tablomuz üzerindeki Ahmet isimli kullanıcının yaşını 50 olarak güncelleyelim.
komut = "UPDATE ogrenciler SET yas = ? WHERE isim = ?"
imlec.execute(komut,(50,'Ahmet'))
db.commit()
Verileri ? ile işaretleyip verileri demet halinde
execute()
fonksiyonuna vermemizin ardından hemen sonucu kontrol edelim.komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
veri = imlec.fetchall()
print(veri) # [('Yunus', 25), ('Özlem', 15), ('Ahmet', 50)]
Tablomuz üzerindeki bir veriyi silmek için
DELETE
sql komutunu kullanmalıyız. Örnek olarak aynı tablo üzerinde yer alan Yunus kullanıcısını silelim.komut = "DELETE FROM ogrenciler WHERE isim = ?"
imlec.execute(komut,('Yunus',))
db.commit()
Tek elemanlı bir demet kullandığımız için elemandan sonra virgül koyuyoruz ve Yunus isimli satırı silmek istediğimizi söylüyoruz. Ardından sonucumuz şu şekilde oluyor.
komut = """SELECT * FROM ogrenciler"""
imlec.execute(komut)
veri = imlec.fetchall()
print(veri) # [('Özlem', 15), ('Ahmet', 50)]
Veritabanı üzerindeki işlerinizi tamamladığınızda veritabanı bağlantısını sonlandırmak için
close()
fonksiyonunu kullanmalısınız.db.close()
SQLite Browser, elinizdeki veritabanı üzerindeki çalışmalarınızı bir arayüz üzerinden yapmanızı sağlar. Basit ve kullanışlı arayüzü ile tüm veritabanı işlemlerinizi rahatlıkla yapabilirsiniz.

Sqlite Browser programının arayüzü
Tüm işlemleri kısaca özetlersek sırasıyla şu işlemleri yapmalısınız.
- 1.
sqlite3
modülünü projenize dahil edin - 2.Mevcut veya yeni veritabanınızı
connect()
fonksiyonu ile bağlayın - 3.
cursor()
fonksiyonu ile imleç oluşturun - 4.Sql komutlarınızı
execute()
fonksiyonu ile işletin. - 5.Veritabanınızda değişiklik olacaksa
commit()
edin. - 6.Veritabanı bağlantınızı
close()
ile sonlandırın.
Last modified 3yr ago