onur akbaş 1
onur akbaş
PrimeAC 1
PrimeAC
Mt2Hizmet 1
Mt2Hizmet
romegames 1
romegames
Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Python ile Sqlite Veritabanı Programlama

  • Konuyu başlatan Konuyu başlatan S3MB0L
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 758

S3MB0L

𝖎𝖇𝖗𝖆𝖍𝖎𝖒
Telefon Numarası Onaylanmış Üye
TM Üye
Katılım
1 Eyl 2018
Konular
126
Mesajlar
435
Çözüm
3
Online süresi
21d 12h
Reaksiyon Skoru
192
Altın Konu
13
Başarım Puanı
139
Yaş
32
MmoLira
1,976
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Hepinize Merhabalar Turkmmo Üyeleri,

Bugün Python ile bir Sqlite veritabanında veri girme, silme, günceleme, sıralama gibi işlemler yapacağız. Verileri daha düzenli bir şekilde görmek için aşağıda sitesini vermiş olduğum programı kullanıyorum. Bu işlemleri yapmak için sqlite modülünü indirmiş olmamız lazım. Yaptığım her şeyi açıklayarak yapacağım. Bir sorunuz veya hatanız var ise yazabilirsiniz.


Başlıklar

Ne Yapacağımız Hakkında Güzel Bir Benzetme
Modülü İmport Etmek
Veritabanına Bağlantı Kurma
Cursor/İmleç Oluşturalım
Bir Tablo Oluşturalım
Tablomuza Veri Girelim
Veri Silelim
Veri Güncelleme
Veritabanından Seçim Yapalım
Veri Filtreleme
Verilerimizi Sıralayalım
Dışardan veri alarak işlem yapmak istersek
Güvenlik ve Bu Konu Hakkında
Yararlı Linkler



>> Ne Yapacağımız Hakkında Güzel Bir Benzetme <<

Diyelim ki elinizde bir defter var. Deftere resim çizmek için öncelikle defteri açmamız lazım. Defteri açtıktan sonra bir karalama yapmamız lazım. Çizeceklerimizin taslağını oluşturduktan sonra silinmemesi için keçeli kalem ile üstünden geçmemiz lazım. İşte biz bu aşamaların aynısını sanal ortamda kodlarımız ile yapacağız. Bu örnek bu işlemleri daha iyi anlamanızı sağlayacaktır.


>> Modülü İmport Etmek <<

Öncelikle modülümüzü import ediyoruz. Bu aşamayı defteri elimize almak gibi düşünebiliriz.

Kod:​
import sqlite3

Modülümüzü import ettik ama ben her çağırdığımda sqlite3 yazmak istemiyorum. Bu yüzden sqlite modülümü farklı bir ad ile içe aktaracağım.


Kod:​
import sqlite3 as sql

Artık sqlite3 yerine "sql" yazmamız yeterli olacak. "sql" dışında bir şey de yazabilirsiniz ama ben şu an çok alakasız şeyler yazmak istemiyorum. Eğer çok üşengeçseniz "a" vs. de yazabilirsiniz ama bunu tavsiye etmem.



>> Veritabanına Bağlantı Kurma <<


Defteri elimize aldık ve şu an defteri açıyoruz.
Şimdi isterseniz sqlite3 veritabanımıza bağlantımızı kuralım. Bunu şu şekilde yapabiliriz :


Kod:​
db = sql.connect('veritabanı yolu/veritabanı adı')


Bağlantımızı kurduk ve bu bağlantıyı "db" değişkenine atadık.


Şu şekilde diskimizin üzerinde geçici bir veritabanı oluşturabiliriz :


Kod:​
db = sql.connect(':memory:')

>> Cursor/İmleç Oluşturalım <<

Defteri aldık ve açtık. Şimdi de karalama yapmak için elimize bir kalem alalım.

Kod:​
cursor = db.cursor()


cursor değişkenimizi imleç olarak ayarladık ve şimdi yapacağımız yazma, silme, güncelleme gibi işlemlerimizi bu kalem ile yapacağız.



>>Bir Tablo Oluşturalım<<




Kod:​
cursor.execute("CREATE TABLE tablo_ismi (sütun1,sütun2,sütun3)")


Bu şekilde yaptığımızda tablo_ismi adında üç sütunlu bir tablo oluşturacak.

Eğer bu kodu ikinci kez çalıştırırsanız şu şekilde bir hata veriyor :


Alıntı:​
sqlite3.OperationalError: tablo_ismi skor already exists​

Bu hatayı sqlite3 modülünün bize sunduğu bir kod ile çözüyoruz: IF NOT EXISTS :


Kod:​
cursor.execute("CREATE TABLE IF NOT EXISTS tablo_ismi (sütun1,sütun2,sütun3)")

Şimdi biz bir skor sistemi yapalım. Skor adında bir table oluşturalım nick,skor, sütunlarını ekleyelim.

Kod:​
cursor.execute("CREATE TABLE skor(nick,skor)")

Evet tablomuzu oluşturdum. Veri girme işlemlerini bu tablo üzerinden anlatacağım.


>>Tablomuza Veri Girelim<<


Eveet şimdi her şey hazır, kalemimiz elimizde başlayalım çizmeye.
Öncelikle Tablomuz bizden bir nick ve puan istiyor. Yani bizim 2 eleman girmemiz lazım.
Öncelikle karşılaşacağımız hatalara bakalım :

Eğer eksik eleman girersek :



Kod:​
cursor.execute("INSERT INTO skor VALUES ('hkey')")

Alıntı:​
sqlite3.OperationalError: table skor has 2 columns but 1 values were supplied​


Bize : Skor tablosu iki kolona sahip ama sen bir tane değer girdin ne ayaksın ? diyor. Ve biz de heyecandan ne yapacağımızı şaşırıyoruz ve bu sefer yanlışlıkla üç eleman giriyoruz.



Kod:​
cursor.execute("INSERT INTO skor VALUES ('hkey','654','aa')")


Alıntı:​
sqlite3.OperationalError: table skor has 2 columns but 3 values were supplied​
Aslında hatalarda tek değişen şey sayılar. Daha fazla kızdırmadan doğru sayıda eleman girelim ve bakalım.

Kod:​
cursor.execute("INSERT INTO skor VALUES ('hkey','654')")


Bu kodu çalıştırdığımızda bize hiç bir hata vermedi. Bakalım verilerimizi girmiş mi ?

unknown.png


Çok güzel ! Tablomuzu oluşturmuş. Bakalım verilerimizi girmiş mi ?


unknown.png


O da ne ? Verilerimizi girmemiş. Neden ola ki ? Bir düşünelim, defteri açtık, sayfamızı açtık, kalemi elimize aldık, hatta yazımızı da yazdık. Aa taslak çizimimizin üstünden geçmemişsiz, üstünden geçmediğimiz için de kayboluvermiş. O zaman biz bunun üstünden güzel bir kalemle geçelim değil mi ?

Kod:​
db.commit()

Böylece taslağımızın üstünden geçtik ve kaydettik. Şimdi bakalım yazmış mı ?

unknown.png

Şükürler olsun ki yazdırabildik.

>>Veri Silelim<<

Verileri silmek gerekebilir ve bunları bazı kriterlere göre yapmamız gerekebilir:

Kod:
cursor.execute("DELETE FROM skor WHERE nick = 'hkey' ")

Bu kod ile skor tablosundaki nicki hkey olan tüm verileri sildim. Nicki hkey olan bir veri olduğu için sadece o veri silindi.

unknown.png

unknown.png

>>Veri Güncelleme<<

Veriler üzerinde değişiklik yapmak gerekebilir. Bazen boş değerleri doldurmak bazen de dolu değerleri değiştirmek olarak karşımıza çıkabilir.

Kod:
cursor.execute("UPDATE skor SET skor = '1000' WHERE nick = 'hkey'")

Burada skor tablosunda nick değeri hkey olan satırların skor değerini 1000 yaptım.
unknown.png

unknown.png

>>Veritabanından Seçim Yapalım<<

Defterimizde bir sürü resim var. Bunlardan belli kriterlere uyanları seçmek istiyorsunuz. Örneğin : doğa ile ilgili resimlerinizi ayrı bir yerde tutacaksınız veya çevrecilik haftasında sosyal medyada paylaşacaksınız...

Kod:
cursor.execute("SELECT * FROM skor")

Bu şekilde skor tablosundaki her şeyi seçtim. İsterseniz oraya bir sütun adı yazabilirsiniz. Şimdi bunları bir değere atayalım ki uçup gitmesinler değil mi ?

Kod:
skorlar = cursor.fetchall()

İsterseniz fethone() ile birer birer alabilirsiniz :

Kod:
cursor.fetcone()

fetchmany() Metodu ile istediğimiz sayıda veri alabiliriz. Tablodaki veri sayısından fazla girerseniz hata verecektir.

Kod:
cursor.fetchmany(2)

>>Veri Filtreleme<<

Veritabanımızdaki verileri süzebiliriz.

Kod:
cursor.execute("SELECT * FROM tablo_adi WHERE sütun = aranan")

Bu kod ile tablo_adi tablosundaki sütun değeri aranan'a eşit olan verileri çektik. Bu sorguda yukarda anlattığım fetch'lerin hepsini kullanabilirsiniz. || Aslında dümdüz İngilizce kullanıyoruz.


>>Verilerimizi Sıralayalım<<

Bazen verilerimizi sıralamak gerekebilir bunu için aşağıdaki kodu kullanabilirsiniz.
Kod:
imlec.execute(f"SELECT ne_seçilecek FROM tablo_adi ORDER BY neye_göre sıralanacak DESC")

Bu kod : tablo_adi tablosundaki verileri neye_göre'ye göre sıralayarak ne_seçilecek değerlerini çekiyor.

>>Dışardan veri alarak işlem yapmak istersek<<

Bir fonksiyon oluşturuyorsanız, değer dışardan girilecekse ne yapabilirsiniz göstereyim :

Kod:
a = 'nick'
b= 'puan'
cursor.execute("INSERT INTO skor VALUES ((?),(?))",(a,b))

En sonda veritabanımızı kapatabiliriz :

Kod:

db.close()

>>Güvenlik ve Bu Konu Hakkında <<

Veritabanlarımızda işlemler yaparken güvenliğe dikkat etmemiz gerekir. Sql açıkları başımıza bela olabilir. Ben bunları burada anlatmayacağım ama araştırmanız gereken önemli bir konu. Konu altına yararlı linkler (yazılar,videolar) bırakacağım onları da izleyip okuyabilirsiniz. Ne kadar pratik yaparsanız o kadar iyi öğrenirsiniz. Eğer bir hatanız var ise mutlaka ama mutlaka yazın. Eğer aklınızda soru kalırsa ilerde sizi rahatsız edebilir. Sorun sorunuzu rahatlayın. Konu ile ilgili görüşünüzü aşağı yazabilirsiniz.


Şu kodları da şöyle bırakayım :
import sqlite3 as sql


db = sql.connect('deneme.sqlite')

cursor = db.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS skor(nick,skor)")
a = 'hkey'
b= '656'
cursor.execute("INSERT INTO skor VALUES ((?),(?))",(a,b))
cursor.execute("UPDATE skor SET skor = '10000' WHERE nick = 'hkey'")


cursor.execute("SELECT * FROM skor")
skorlar = cursor.fetchall()

cursor.execute("SELECT * FROM tablo_adi WHERE sütun = aranan")
db.commit()
>>Yararlı Linkler<<






VT





 
Paylasım İçin Teşekkürler..
 
Hepinize Merhabalar Turkmmo Üyeleri,

Bugün Python ile bir Sqlite veritabanında veri girme, silme, günceleme, sıralama gibi işlemler yapacağız. Verileri daha düzenli bir şekilde görmek için aşağıda sitesini vermiş olduğum programı kullanıyorum. Bu işlemleri yapmak için sqlite modülünü indirmiş olmamız lazım. Yaptığım her şeyi açıklayarak yapacağım. Bir sorunuz veya hatanız var ise yazabilirsiniz.


Başlıklar

Ne Yapacağımız Hakkında Güzel Bir Benzetme
Modülü İmport Etmek
Veritabanına Bağlantı Kurma
Cursor/İmleç Oluşturalım
Bir Tablo Oluşturalım
Tablomuza Veri Girelim
Veri Silelim
Veri Güncelleme
Veritabanından Seçim Yapalım
Veri Filtreleme
Verilerimizi Sıralayalım
Dışardan veri alarak işlem yapmak istersek
Güvenlik ve Bu Konu Hakkında
Yararlı Linkler



>> Ne Yapacağımız Hakkında Güzel Bir Benzetme <<
Diyelim ki elinizde bir defter var. Deftere resim çizmek için öncelikle defteri açmamız lazım. Defteri açtıktan sonra bir karalama yapmamız lazım. Çizeceklerimizin taslağını oluşturduktan sonra silinmemesi için keçeli kalem ile üstünden geçmemiz lazım. İşte biz bu aşamaların aynısını sanal ortamda kodlarımız ile yapacağız. Bu örnek bu işlemleri daha iyi anlamanızı sağlayacaktır.


>> Modülü İmport Etmek <<

Öncelikle modülümüzü import ediyoruz. Bu aşamayı defteri elimize almak gibi düşünebiliriz.

Kod:

import sqlite3

Modülümüzü import ettik ama ben her çağırdığımda sqlite3 yazmak istemiyorum. Bu yüzden sqlite modülümü farklı bir ad ile içe aktaracağım.


Kod:

import sqlite3 as sql

Artık sqlite3 yerine "sql" yazmamız yeterli olacak. "sql" dışında bir şey de yazabilirsiniz ama ben şu an çok alakasız şeyler yazmak istemiyorum. Eğer çok üşengeçseniz "a" vs. de yazabilirsiniz ama bunu tavsiye etmem.



>> Veritabanına Bağlantı Kurma <<


Defteri elimize aldık ve şu an defteri açıyoruz.
Şimdi isterseniz sqlite3 veritabanımıza bağlantımızı kuralım. Bunu şu şekilde yapabiliriz :


Kod:

db = sql.connect('veritabanı yolu/veritabanı adı')


Bağlantımızı kurduk ve bu bağlantıyı "db" değişkenine atadık.


Şu şekilde diskimizin üzerinde geçici bir veritabanı oluşturabiliriz :


Kod:

db = sql.connect(':memory:')

>> Cursor/İmleç Oluşturalım <<

Defteri aldık ve açtık. Şimdi de karalama yapmak için elimize bir kalem alalım.

Kod:

cursor = db.cursor()


cursor değişkenimizi imleç olarak ayarladık ve şimdi yapacağımız yazma, silme, güncelleme gibi işlemlerimizi bu kalem ile yapacağız.



>>Bir Tablo Oluşturalım<<




Kod:

cursor.execute("CREATE TABLE tablo_ismi (sütun1,sütun2,sütun3)")


Bu şekilde yaptığımızda tablo_ismi adında üç sütunlu bir tablo oluşturacak.

Eğer bu kodu ikinci kez çalıştırırsanız şu şekilde bir hata veriyor :


Alıntı:​
sqlite3.OperationalError: tablo_ismi skor already exists​

Bu hatayı sqlite3 modülünün bize sunduğu bir kod ile çözüyoruz: IF NOT EXISTS :


Kod:

cursor.execute("CREATE TABLE IF NOT EXISTS tablo_ismi (sütun1,sütun2,sütun3)")

Şimdi biz bir skor sistemi yapalım. Skor adında bir table oluşturalım nick,skor, sütunlarını ekleyelim.

Kod:

cursor.execute("CREATE TABLE skor(nick,skor)")

Evet tablomuzu oluşturdum. Veri girme işlemlerini bu tablo üzerinden anlatacağım.


>>Tablomuza Veri Girelim<<


Eveet şimdi her şey hazır, kalemimiz elimizde başlayalım çizmeye.
Öncelikle Tablomuz bizden bir nick ve puan istiyor. Yani bizim 2 eleman girmemiz lazım.
Öncelikle karşılaşacağımız hatalara bakalım :

Eğer eksik eleman girersek :



Kod:

cursor.execute("INSERT INTO skor VALUES ('hkey')")

Alıntı:​
sqlite3.OperationalError: table skor has 2 columns but 1 values were supplied​


Bize : Skor tablosu iki kolona sahip ama sen bir tane değer girdin ne ayaksın ? diyor. Ve biz de heyecandan ne yapacağımızı şaşırıyoruz ve bu sefer yanlışlıkla üç eleman giriyoruz.



Kod:

cursor.execute("INSERT INTO skor VALUES ('hkey','654','aa')")


Alıntı:​
sqlite3.OperationalError: table skor has 2 columns but 3 values were supplied​
Aslında hatalarda tek değişen şey sayılar. Daha fazla kızdırmadan doğru sayıda eleman girelim ve bakalım.

Kod:

cursor.execute("INSERT INTO skor VALUES ('hkey','654')")


Bu kodu çalıştırdığımızda bize hiç bir hata vermedi. Bakalım verilerimizi girmiş mi ?

unknown.png


Çok güzel ! Tablomuzu oluşturmuş. Bakalım verilerimizi girmiş mi ?


unknown.png


O da ne ? Verilerimizi girmemiş. Neden ola ki ? Bir düşünelim, defteri açtık, sayfamızı açtık, kalemi elimize aldık, hatta yazımızı da yazdık. Aa taslak çizimimizin üstünden geçmemişsiz, üstünden geçmediğimiz için de kayboluvermiş. O zaman biz bunun üstünden güzel bir kalemle geçelim değil mi ?

Kod:

db.commit()

Böylece taslağımızın üstünden geçtik ve kaydettik. Şimdi bakalım yazmış mı ?

unknown.png

Şükürler olsun ki yazdırabildik.

>>Veri Silelim<<

Verileri silmek gerekebilir ve bunları bazı kriterlere göre yapmamız gerekebilir:

Kod:
cursor.execute("DELETE FROM skor WHERE nick = 'hkey' ")

Bu kod ile skor tablosundaki nicki hkey olan tüm verileri sildim. Nicki hkey olan bir veri olduğu için sadece o veri silindi.

unknown.png

unknown.png

>>Veri Güncelleme<<

Veriler üzerinde değişiklik yapmak gerekebilir. Bazen boş değerleri doldurmak bazen de dolu değerleri değiştirmek olarak karşımıza çıkabilir.

Kod:
cursor.execute("UPDATE skor SET skor = '1000' WHERE nick = 'hkey'")

Burada skor tablosunda nick değeri hkey olan satırların skor değerini 1000 yaptım.
unknown.png

unknown.png

>>Veritabanından Seçim Yapalım<<

Defterimizde bir sürü resim var. Bunlardan belli kriterlere uyanları seçmek istiyorsunuz. Örneğin : doğa ile ilgili resimlerinizi ayrı bir yerde tutacaksınız veya çevrecilik haftasında sosyal medyada paylaşacaksınız...

Kod:
cursor.execute("SELECT * FROM skor")

Bu şekilde skor tablosundaki her şeyi seçtim. İsterseniz oraya bir sütun adı yazabilirsiniz. Şimdi bunları bir değere atayalım ki uçup gitmesinler değil mi ?

Kod:
skorlar = cursor.fetchall()

İsterseniz fethone() ile birer birer alabilirsiniz :

Kod:
cursor.fetcone()

fetchmany() Metodu ile istediğimiz sayıda veri alabiliriz. Tablodaki veri sayısından fazla girerseniz hata verecektir.

Kod:
cursor.fetchmany(2)

>>Veri Filtreleme<<

Veritabanımızdaki verileri süzebiliriz.

Kod:
cursor.execute("SELECT * FROM tablo_adi WHERE sütun = aranan")

Bu kod ile tablo_adi tablosundaki sütun değeri aranan'a eşit olan verileri çektik. Bu sorguda yukarda anlattığım fetch'lerin hepsini kullanabilirsiniz. || Aslında dümdüz İngilizce kullanıyoruz.


>>Verilerimizi Sıralayalım<<

Bazen verilerimizi sıralamak gerekebilir bunu için aşağıdaki kodu kullanabilirsiniz.
Kod:
imlec.execute(f"SELECT ne_seçilecek FROM tablo_adi ORDER BY neye_göre sıralanacak DESC")

Bu kod : tablo_adi tablosundaki verileri neye_göre'ye göre sıralayarak ne_seçilecek değerlerini çekiyor.

>>Dışardan veri alarak işlem yapmak istersek<<

Bir fonksiyon oluşturuyorsanız, değer dışardan girilecekse ne yapabilirsiniz göstereyim :

Kod:
a = 'nick'
b= 'puan'
cursor.execute("INSERT INTO skor VALUES ((?),(?))",(a,b))

En sonda veritabanımızı kapatabiliriz :

Kod:

db.close()

>>Güvenlik ve Bu Konu Hakkında <<

Veritabanlarımızda işlemler yaparken güvenliğe dikkat etmemiz gerekir. Sql açıkları başımıza bela olabilir. Ben bunları burada anlatmayacağım ama araştırmanız gereken önemli bir konu. Konu altına yararlı linkler (yazılar,videolar) bırakacağım onları da izleyip okuyabilirsiniz. Ne kadar pratik yaparsanız o kadar iyi öğrenirsiniz. Eğer bir hatanız var ise mutlaka ama mutlaka yazın. Eğer aklınızda soru kalırsa ilerde sizi rahatsız edebilir. Sorun sorunuzu rahatlayın. Konu ile ilgili görüşünüzü aşağı yazabilirsiniz.


Şu kodları da şöyle bırakayım :
import sqlite3 as sql


db = sql.connect('deneme.sqlite')

cursor = db.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS skor(nick,skor)")
a = 'hkey'
b= '656'
cursor.execute("INSERT INTO skor VALUES ((?),(?))",(a,b))
cursor.execute("UPDATE skor SET skor = '10000' WHERE nick = 'hkey'")


cursor.execute("SELECT * FROM skor")
skorlar = cursor.fetchall()

cursor.execute("SELECT * FROM tablo_adi WHERE sütun = aranan")
db.commit()
>>Yararlı Linkler<<






VT





faydalı paylaşımlar için teşekkürler
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst