Python'da SQLite3 ile Veritabanı Oluşturmak ve Veri İşlemleri.

ZiksthemW

Uzman üye
28 Mar 2020
1,025
113
Oslo
Merhaba değerli Python severler ve TurkHackTeam üyeleri.
Bu konumuzda başlıktan da anlayabileceğiniz üzere Python'da SQLite3 ile yapabileceğimiz birkaç şeyi göreceğiz.

Konuya başlamadan söylemeliyim ki Python'da SQLite3 ile çalışırken veritabanı oluşturmak ve veri işlemleri yapmak gerçekten basit. C# dilindeki gibi karmaşık işlemlerle uğraşmıyoruz.



UYARI: Lütfen bu konuyu okumadan önce Python ve en azından giriş seviye veritabanı programlaması bildiğinizden emin olunuz.


Veritabanı Oluşturmak

SQLite3 kullanırken veri tabanı oluşturmak yukarıda da söylediğim gibi çok basit, isterseniz aşağıdaki kod öbeğine göz gezdirelim ve kodun ne işe' yaradığını kavrayalım.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db") # bglnt değişkeni oluşturuyoruz ve bu değişken sayesinde veritabanına bağlanıyoruz.
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE uyeler (id INT, kullaniciadi TEXT, parola TEXT)") # veritabani.db adlı veritabanı dosyamızda 'uyeler' tablomuzu oluşturuyoruz.
bglnt.commit()

Bu veritabanını görsel olarak göstermem gerekirse şöyle gösterebilirim. İçine daha herhangi bir veri atmadığımız için şu anlık içi boş.
idkullaniciadiparola

Kodu bu haliyle birden fazla çalıştırmayı denerseniz hata alabilirsiniz veya veritabanınız sıfırlanabilir, çünkü her çalıştığında tekrardan 'veritabanı.db' içinde 'uyeler' tablosunu oluşturmaya çalışıyor. Bunun engellemek için aşağıdaki kodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

Görebileceğiniz üzere kodumuza yeni 3 kelime eklendi. Bu eklediğimiz 3 kelimeyi Türkçe'ye çevirmemiz gerekir ise karşılığı şu olacaktır: "Halihazırda Yoksa".

Eğer hata(ları)mızdan kurtulduysak ve veritabanımızı başarılı bir şekilde oluşturduysak veri girmeyi ve veri çekmeyi görebiliriz.


Veri Girmek

SQLite3'de neredeyse her şey basit olduğu gibi veri girmek de aşırı basit. Tek yapmanız gereken cursor ile veriyi çekmek.

Basitçe veri girmek için alttaki kodu kullanabilirsiniz.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (1, 'ZiksthemW', 'CokGizliBirParola!123')")
bglnt.commit()

Görebileceğiniz üzere veritabanımıza az önce 1 IDsine sahip bir üye ekledik.

Bunun yerine daha farklı bir şekilde daha veri girme işlemi yapabilirsiniz. Bunu da aşağıda gösterdim.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre)) # INSERT INTO methodu ile verileri hangi tabloya gireceğimizi seçiyoruz.
bglnt.commit()

Anlık olarak veritabanımızı görsel olarak görmek isterseniz aşağıdaki gibi bir görüntü olacaktır.
idkullaniciadiparola
1ZiksCokGizliBirParola!


Veri Çekmek

SQLite3'de ise veri çekmek veri girmekten daha da basit. Tek yapmanız gereken cursor ile bilgileri çekmek. Aşağıya basit bir örnek bıraktım.

Veritabanından tüm verileri çekmek


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler;") # 'uyeler' tablosundan tüm sütunları/satırları çek komutu veriyoruz.
data = cursor.fetchall() # Verileri 'data' değişkenine kaydediyoruz.

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Böyle yaparsanız veritabanında bulunan tüm verileri çekersiniz. Fakat sadece bir veriyi çekmek isterseniz aşağıdaki methodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 3
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler WHERE id = 3;") # IDsi 3 rakamına eşit tüm verileri çekiyoruz.
data = cursor.fetchall()

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Veritabanını Görsel Olarak Açmak

SQLite3 aynı zamanda veritabanınızı görsel olarak görmenize de olanak sağlıyor. Bunu yapmak için sadece 'DB Browser for SQLite' programına ihtiyacınız var, ki bu programı da BURADAN indirebilirsiniz. Programın kullanımı çok basit, aşağıdaki fotoğrafları takip ederseniz kolayca kavrayabilirsiniz.

8qxcwr1.png


3z6xquo.png


8q2p1jz.png



Son olarak size kendi tavsiyem olan bir kod örneği vereceğim. Şahsen böyle kullanıyorum ve daha basit ve kullanışı daha kolaylı geliyor. Kullanıp kullanmamak size kalmış.

Python:
import sqlite3

def veriCek(method, yanit):
    if method == None and yanit == None:
        cursor.execute("SELECT * FROM uyeler;")
        return cursor.fetchall()
    else:
        cursor.execute(f"SELECT * FROM uyeler WHERE {method} = '{yanit}';")
        return cursor.fetchone()

def tabloolustur():
    cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
    bglnt.commit()
    veriCek(None, None)
    
tabloolustur()


SON SÖZ

Evet, konumuz buraya kadardı. Umarım beğenmişsinizdir ve anlatımım hoşunuza gitmiştir. Sormak istediğiniz birşey var ise özel mesaj ile veya konu altına yazarak yanıt alabilirsiniz.

 

KΛRΛ

Uzman üye
26 Mar 2018
1,233
202
Çok güzel bir konu hocam elinize sağlık, müsait bir vakitte detaylı olarak inceleyeceğim :)

"Konu nasıl olmalı"ya çok güzel bir örnek 🙃
 

'The Wolf

Kıdemli Üye
22 Nis 2021
4,043
2,565
Tanrı dağı
Merhaba değerli Python severler ve TurkHackTeam üyeleri.
Bu konumuzda başlıktan da anlayabileceğiniz üzere Python'da SQLite3 ile yapabileceğimiz birkaç şeyi göreceğiz.

Konuya başlamadan söylemeliyim ki Python'da SQLite3 ile çalışırken veritabanı oluşturmak ve veri işlemleri yapmak gerçekten basit. C# dilindeki gibi karmaşık işlemlerle uğraşmıyoruz.



UYARI: Lütfen bu konuyu okumadan önce Python ve en azından giriş seviye veritabanı programlaması bildiğinizden emin olunuz.


Veritabanı Oluşturmak

SQLite3 kullanırken veri tabanı oluşturmak yukarıda da söylediğim gibi çok basit, isterseniz aşağıdaki kod öbeğine göz gezdirelim ve kodun ne işe' yaradığını kavrayalım.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db") # bglnt değişkeni oluşturuyoruz ve bu değişken sayesinde veritabanına bağlanıyoruz.
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE uyeler (id INT, kullaniciadi TEXT, parola TEXT)") # veritabani.db adlı veritabanı dosyamızda 'uyeler' tablomuzu oluşturuyoruz.
bglnt.commit()

Bu veritabanını görsel olarak göstermem gerekirse şöyle gösterebilirim. İçine daha herhangi bir veri atmadığımız için şu anlık içi boş.
idkullaniciadiparola

Kodu bu haliyle birden fazla çalıştırmayı denerseniz hata alabilirsiniz veya veritabanınız sıfırlanabilir, çünkü her çalıştığında tekrardan 'veritabanı.db' içinde 'uyeler' tablosunu oluşturmaya çalışıyor. Bunun engellemek için aşağıdaki kodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

Görebileceğiniz üzere kodumuza yeni 3 kelime eklendi. Bu eklediğimiz 3 kelimeyi Türkçe'ye çevirmemiz gerekir ise karşılığı şu olacaktır: "Halihazırda Yoksa".

Eğer hata(ları)mızdan kurtulduysak ve veritabanımızı başarılı bir şekilde oluşturduysak veri girmeyi ve veri çekmeyi görebiliriz.


Veri Girmek

SQLite3'de neredeyse her şey basit olduğu gibi veri girmek de aşırı basit. Tek yapmanız gereken cursor ile veriyi çekmek.

Basitçe veri girmek için alttaki kodu kullanabilirsiniz.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (1, 'ZiksthemW', 'CokGizliBirParola!123')")
bglnt.commit()

Görebileceğiniz üzere veritabanımıza az önce 1 IDsine sahip bir üye ekledik.

Bunun yerine daha farklı bir şekilde daha veri girme işlemi yapabilirsiniz. Bunu da aşağıda gösterdim.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre)) # INSERT INTO methodu ile verileri hangi tabloya gireceğimizi seçiyoruz.
bglnt.commit()

Anlık olarak veritabanımızı görsel olarak görmek isterseniz aşağıdaki gibi bir görüntü olacaktır.
idkullaniciadiparola
1ZiksCokGizliBirParola!


Veri Çekmek

SQLite3'de ise veri çekmek veri girmekten daha da basit. Tek yapmanız gereken cursor ile bilgileri çekmek. Aşağıya basit bir örnek bıraktım.

Veritabanından tüm verileri çekmek


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler;") # 'uyeler' tablosundan tüm sütunları/satırları çek komutu veriyoruz.
data = cursor.fetchall() # Verileri 'data' değişkenine kaydediyoruz.

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Böyle yaparsanız veritabanında bulunan tüm verileri çekersiniz. Fakat sadece bir veriyi çekmek isterseniz aşağıdaki methodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 3
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler WHERE id = 3;") # IDsi 3 rakamına eşit tüm verileri çekiyoruz.
data = cursor.fetchall()

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Veritabanını Görsel Olarak Açmak

SQLite3 aynı zamanda veritabanınızı görsel olarak görmenize de olanak sağlıyor. Bunu yapmak için sadece 'DB Browser for SQLite' programına ihtiyacınız var, ki bu programı da BURADAN indirebilirsiniz. Programın kullanımı çok basit, aşağıdaki fotoğrafları takip ederseniz kolayca kavrayabilirsiniz.

8qxcwr1.png


3z6xquo.png


8q2p1jz.png



Son olarak size kendi tavsiyem olan bir kod örneği vereceğim. Şahsen böyle kullanıyorum ve daha basit ve kullanışı daha kolaylı geliyor. Kullanıp kullanmamak size kalmış.

Python:
import sqlite3

def veriCek(method, yanit):
    if method == None and yanit == None:
        cursor.execute("SELECT * FROM uyeler;")
        return cursor.fetchall()
    else:
        cursor.execute(f"SELECT * FROM uyeler WHERE {method} = '{yanit}';")
        return cursor.fetchone()

def tabloolustur():
    cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
    bglnt.commit()
    veriCek(None, None)
   
tabloolustur()


SON SÖZ

Evet, konumuz buraya kadardı. Umarım beğenmişsinizdir ve anlatımım hoşunuza gitmiştir. Sormak istediğiniz birşey var ise özel mesaj ile veya konu altına yazarak yanıt alabilirsiniz.

Güzel Konu Olmuş Ellerinize Sağlık.
 

Rewan

Asistan Moderatör
26 Kas 2020
1,829
1,368
Konum
Merhaba değerli Python severler ve TurkHackTeam üyeleri.
Bu konumuzda başlıktan da anlayabileceğiniz üzere Python'da SQLite3 ile yapabileceğimiz birkaç şeyi göreceğiz.

Konuya başlamadan söylemeliyim ki Python'da SQLite3 ile çalışırken veritabanı oluşturmak ve veri işlemleri yapmak gerçekten basit. C# dilindeki gibi karmaşık işlemlerle uğraşmıyoruz.



UYARI: Lütfen bu konuyu okumadan önce Python ve en azından giriş seviye veritabanı programlaması bildiğinizden emin olunuz.


Veritabanı Oluşturmak

SQLite3 kullanırken veri tabanı oluşturmak yukarıda da söylediğim gibi çok basit, isterseniz aşağıdaki kod öbeğine göz gezdirelim ve kodun ne işe' yaradığını kavrayalım.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db") # bglnt değişkeni oluşturuyoruz ve bu değişken sayesinde veritabanına bağlanıyoruz.
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE uyeler (id INT, kullaniciadi TEXT, parola TEXT)") # veritabani.db adlı veritabanı dosyamızda 'uyeler' tablomuzu oluşturuyoruz.
bglnt.commit()

Bu veritabanını görsel olarak göstermem gerekirse şöyle gösterebilirim. İçine daha herhangi bir veri atmadığımız için şu anlık içi boş.
idkullaniciadiparola

Kodu bu haliyle birden fazla çalıştırmayı denerseniz hata alabilirsiniz veya veritabanınız sıfırlanabilir, çünkü her çalıştığında tekrardan 'veritabanı.db' içinde 'uyeler' tablosunu oluşturmaya çalışıyor. Bunun engellemek için aşağıdaki kodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

Görebileceğiniz üzere kodumuza yeni 3 kelime eklendi. Bu eklediğimiz 3 kelimeyi Türkçe'ye çevirmemiz gerekir ise karşılığı şu olacaktır: "Halihazırda Yoksa".

Eğer hata(ları)mızdan kurtulduysak ve veritabanımızı başarılı bir şekilde oluşturduysak veri girmeyi ve veri çekmeyi görebiliriz.


Veri Girmek

SQLite3'de neredeyse her şey basit olduğu gibi veri girmek de aşırı basit. Tek yapmanız gereken cursor ile veriyi çekmek.

Basitçe veri girmek için alttaki kodu kullanabilirsiniz.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (1, 'ZiksthemW', 'CokGizliBirParola!123')")
bglnt.commit()

Görebileceğiniz üzere veritabanımıza az önce 1 IDsine sahip bir üye ekledik.

Bunun yerine daha farklı bir şekilde daha veri girme işlemi yapabilirsiniz. Bunu da aşağıda gösterdim.


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre)) # INSERT INTO methodu ile verileri hangi tabloya gireceğimizi seçiyoruz.
bglnt.commit()

Anlık olarak veritabanımızı görsel olarak görmek isterseniz aşağıdaki gibi bir görüntü olacaktır.
idkullaniciadiparola
1ZiksCokGizliBirParola!


Veri Çekmek

SQLite3'de ise veri çekmek veri girmekten daha da basit. Tek yapmanız gereken cursor ile bilgileri çekmek. Aşağıya basit bir örnek bıraktım.

Veritabanından tüm verileri çekmek


Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 2
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler;") # 'uyeler' tablosundan tüm sütunları/satırları çek komutu veriyoruz.
data = cursor.fetchall() # Verileri 'data' değişkenine kaydediyoruz.

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Böyle yaparsanız veritabanında bulunan tüm verileri çekersiniz. Fakat sadece bir veriyi çekmek isterseniz aşağıdaki methodu kullanabilirsiniz.

Python:
import sqlite3

bglnt = sqlite3.connect("veritabani.db")
cursor = bglnt.cursor()

id = 3
ad = "Ziks"
sifre = "CokGizliBirParola!123"

cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
bglnt.commit()

cursor.execute("INSERT INTO uyeler VALUES (?, ?, ?)", (id, ad, sifre))
bglnt.commit()

cursor.execute("SELECT * FROM uyeler WHERE id = 3;") # IDsi 3 rakamına eşit tüm verileri çekiyoruz.
data = cursor.fetchall()

for id, kullaniciadi, parola in data:
    print(id, kullaniciadi, parola)

Veritabanını Görsel Olarak Açmak

SQLite3 aynı zamanda veritabanınızı görsel olarak görmenize de olanak sağlıyor. Bunu yapmak için sadece 'DB Browser for SQLite' programına ihtiyacınız var, ki bu programı da BURADAN indirebilirsiniz. Programın kullanımı çok basit, aşağıdaki fotoğrafları takip ederseniz kolayca kavrayabilirsiniz.

8qxcwr1.png


3z6xquo.png


8q2p1jz.png



Son olarak size kendi tavsiyem olan bir kod örneği vereceğim. Şahsen böyle kullanıyorum ve daha basit ve kullanışı daha kolaylı geliyor. Kullanıp kullanmamak size kalmış.

Python:
import sqlite3

def veriCek(method, yanit):
    if method == None and yanit == None:
        cursor.execute("SELECT * FROM uyeler;")
        return cursor.fetchall()
    else:
        cursor.execute(f"SELECT * FROM uyeler WHERE {method} = '{yanit}';")
        return cursor.fetchone()

def tabloolustur():
    cursor.execute("CREATE TABLE IF NOT EXISTS uyeler (id INT, kullaniciadi TEXT, parola TEXT)")
    bglnt.commit()
    veriCek(None, None)
   
tabloolustur()


SON SÖZ

Evet, konumuz buraya kadardı. Umarım beğenmişsinizdir ve anlatımım hoşunuza gitmiştir. Sormak istediğiniz birşey var ise özel mesaj ile veya konu altına yazarak yanıt alabilirsiniz.

Eline sağlık
 
Ü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.