Sqlite3 Komut kısaltma

baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set TYTTürkçe = ? where Tarih = ?",
                                       ((listeA[0][1] + float(self.TYTtür.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set TYTSosyal = ? where Tarih = ?",
                                   ((listeA[0][2] + float(self.TYTsos.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set TYTMatematik = ? where Tarih = ?",
                                       ((listeA[0][3] + float(self.TYTmat.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set TYTFen = ? where Tarih = ?",
                                       ((listeA[0][4] + float(self.TYTfen.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set AYTMatematik = ? where Tarih = ?",
                                       ((listeA[0][5] + float(self.AYTmat.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set AYTFizik = ? where Tarih = ?",
                                       ((listeA[0][6] + float(self.AYTfiz.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set AYTKimya = ? where Tarih = ?",
                                       ((listeA[0][7] + float(self.AYTkim.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set AYTBiyoloji = ? where Tarih = ?",
                                       ((listeA[0][8] + float(self.AYTbiy.text())), k[0]))
                        baglanti.commit()
                        baglanti = _sqlite3.connect("Sorular.db")
                        cursor = baglanti.cursor()
                        cursor.execute("update SORULAR set TOPLAM = ? where Tarih = ?",
                                       ((listeA[0][9] + float(self.TYTtür.text()) + float(self.TYTsos.text()) + float(self.TYTmat.text()) +
                                         float(self.TYTfen.text()) + float(self.AYTmat.text()) + float(self.AYTfiz.text()) +
                                         float(self.AYTkim.text()) + float(self.AYTbiy.text())), k[0]))
                        baglanti.commit()
                        self.durum.setText("Başarılı!")
                        print("A")

Arkadaşlar bu

baglanti.commit()

benzeri kodlarını her seferinde yazmam zorunlu mu?

Tüm sql query’leri execute edildikten sonra bir kere commit etmeniz yeterli. Ancak bu her zaman istediğiniz şey olmayabilir. Eğer istediğiniz şey bu ise; with deyimini kullanarak veritabanına bağlanın, manuel olarak commit etmenize gerek kalmaz. Her execute işleminden sonra veriler veritabanına commit edilir.

with _sqlite3.connect("Sorular.db") as baglanti:
   ...
2 Beğeni

Evet, aynı dosya işlemlerinde olduğu gibi.

Hayir.

Tekrarlamak istemedigin, ayni olan/birbirine benzeyen bloklar icin fonksiyonlar yazabilirsin. Bir blogu birden fazla kere calistirmak icin de donguler var.

1 Beğeni

Fonksiyon yazmak aklıma geldi ama bir daha kullanmayacağım için copy-paste daha kolay geldi. Bir de böyle yazmam bu tür çok kapsamlı olmayan programlar için büyük sorunlar çıkarır mı?

sqlalchemy kütüphanesine de bakmanızı tavsiye ederim

1 Beğeni

Cok da kolay gelmemis :slight_smile:

Boyle yazmanin calisma acisindan bir sikintisi yok, hayir, ama okurken kolaylik saglamiyor.

Tahminimce query’lere kimse dikkat etmemistir. Alt alta

execute_in_Sorular("update...")
execute_in_Sorular("update...")

seklinde olsaydi onemli olan kisimlar one cikardi. (Hatta simdi fark ettim, query’ler birlesebiliyor sanirim.)

Bi de “cursor.close() lazim” deseydik ayni satiri 8​​​​​​​​​ yere mi koyacaktin?

3 Beğeni

Evet burada da bahsedildiği gibi, bir komutun sonuna noktalı virgül koymak şartı ile, birçok sorguyu tek seferde yapabilirsiniz.

Düzeltme: Sorguları ardarda çalıştırmak için bu metod kullanılıyor. Sorgu birleştirme başka bir olay.

1 Beğeni

Benim dedigim sorgulari birlestirmek, art arda yapmak degil.

1 Beğeni

Tamam yanlış anlamıştım, simdi anladım :smile: