TypeError: Missing 1 required positional argument hatası

critnal

Hectopat
Katılım
3 Haziran 2018
Mesajlar
141
SQLite3 modülü ile bir kütüphane programı yazmaya çalışıyorum ama bu hatayı alıyorum, PyCharm'da ise bazı kullandığım parametrelerin atanmadığını söylüyor. Nasıl düzeltebilirim bu hatayı?

Bu kod classlarımın ve fonksiyonlarımın bulunduğu dosya:
Kod:
import sqlite3

import time

class Kitap():

    def __init__(self,isim,yazar,yayınevi,tür,baskı):

        self.isim = isim
        self.yazar = yazar
        self.yayınevi = yayınevi
        self.tür = tür
        self.baskı = baskı


    def __str__(self):

        return "Kitabın Adı: {}\nKitabın Yazarı: {}\nYayınevi: {}\nKitabın Türü: {}\nKaçıncı Baskısı: {}".format(self.isim,self.yazar,self.yayınevi,self.tür,self.baskı)





class Kütüphane():

    def __init__(self):

        self.baglanti_olustur()




    def baglanti_olustur(self):

        self.baglanti = sqlite3.connect("KütüphaneDatabase.db")

        self.cursor = self.baglanti.cursor()

        sorgu = "CREATE TABLE IF NOT EXITS Kitaplık (isim TEXT,yazar TEXT,yayınevi TEXT,tür TEXT,baskı INT"

        self.cursor.execute(sorgu)

        self.baglanti.commit()




    def baglanti_sonlandir(self):

        self.baglanti.close()


    def kitaplari_goster(self):

        sorgu = "SELECT * FROM Kitaplık"

        self.cursor.execute(sorgu)

        kitaplar =  self.cursor.fetchall()

        if len(kitaplar) == 0:
            print("Kitaplıkta Kitap Bulunmuyor.")

        else:

            for i in kitaplar:

                kitap = Kitap(i[0],i[1],i[2],i[3],i[4])

                print(kitap)





    def kitap_ekle(self,kitap):

        sorgu = "INSERT INTO Kitaplık Values(?,?,?,?,?)"

        self.cursor.execute(sorgu,(kitap.isim,kitap.yazar,kitap.yayınevi,kitap.tür,kitap.baskı))

        self.baglanti.commit()


    def kitap_sorgula(self,isim):

        sorgu = "Select * From Kitaplık Where isim = ?"

        self.cursor.execute(sorgu,(isim))
        kitaplar = self.cursor.fetchall()

        if len(kitaplar) == 0:
            print("Hiçbir Kitap Kayıtlı Değil")

        else:
            kitap = Kitap(kitaplar[0][0],kitaplar[0][1],kitaplar[0][2],kitaplar[0][3],kitaplar[0][4])

            print(kitap)



    def kitap_sil(self,isim):

        sorgu = "Delete From Kitaplık Where isim = ?"

        self.cursor.execute(sorgu,(isim,))

        self.baglanti.commit()




    def baski_yukselt(self,isim):

        sorgu = "Select from Kitaplık Where isim = ?"

        self.cursor.execute(sorgu,(isim,))

        kitaplar = self.cursor.fetchall()

        if len(kitaplar) == 0:
            print("Böyle bir kitaplık bulunmuyor")

        else:
            for i in kitaplar:

                 baskı = i[0][4]

                 baskı += 1

                 sorgu2 = "Update Kitaplar set baskı = ? where isim = ?"

                 self.cursor.execute(sorgu2,(baskı,isim,))

                 self.baglanti.commit()             
[/ICODE]

Bu kod ise kullanıcı girdilerinin alındığı ve fonksiyonların çalıştırıldığı dosyadan.
[ICODE]
from Kütüphane import *

print("""*************************************

Kütüphane Programına Hoşgeldiniz.

İşlemler;

1. Kitapları Göster

2. Kitap Sorgulama

3. Kitap Ekle

4. Kitap Sil

5. Baskı Yükselt

Çıkmak için 'q' ya basın.

*********************************""")

while True:

    islem = input("Hangi İşlemi Yapmak İstersiniz? :")



    if islem == "1":

        Kütüphane.kitaplari_goster()


    elif islem == "2":
        isim = input("Hangi Kitabı İstiyorsunuz?:")
        print("Kitap Sorgulanıyor.")
        time.sleep(2)
        Kütüphane.kitap_sorgula(isim)

    elif islem == "3":

        isim = input("İsim:")
        yazar = input("Yazar:")
        yayınevi = input("Yayınevi:")
        tür = input("Tür:")
        baskı = int(input("Baskı"))

        yeni_kitap = Kitap(isim,yazar,yayınevi,tür,baskı)

        print("Kitap Ekleniyor.")

        time.sleep(2)

        Kütüphane.kitap_ekle(yeni_kitap)


    elif islem == "4":

        isim = input("Hangi Kitabı Silmek İstiyorsunuz?")

        dogrulama = input("Emin Misiniz ? E/H")

        if dogrulama == "E":

            print("Kitap Siliniyor.")
            time.sleep(2)
            Kütüphane.kitap_sil(isim)
            print("Kitap Silindi.")

        elif dogrulama == "H":
            print("Program Sonlandırılıyor.")
            break



    elif islem == "5":

        isim = input("Hangi Kitabın Baskısını Yükseltmek İstiyorsunuz?")
        print("Baskı Yükseltiliyor.")
        time.sleep(2)

        Kütüphane.baski_yukselt(isim)
        print("Baskı Yükseltildi")



    elif islem == "q":
        print("Program Kapatılıyor.")
        break


    else:
        print("Geçersiz işlem.")
Nasıl çözeceğim bu lanet hatayı? Class kodlarını yeniden yazdım ama yine de aynı hatayı alıyorum.
 

Dosya Ekleri

  • resim_2021-05-08_032057.png
    resim_2021-05-08_032057.png
    11 KB · Görüntüleme: 65
Argümanları eksik giriyorsun sanırsam. Ve ya sırasını karıştırmış olabilirsin, dikkatli yaz.

Sorunu buldum, Udemy kursu yardımı ile öğrendiğimden oradaki videoları izleyip kendfim yazmaya çalıştığımdan kütüphane değişkenini kütüphane classına equallamamışım ama şu an da classların bulunduğu dosyada fonksiyonlarda bir sıkıntı var şu an da ise onu fixlemeye çalışıyorum.

Edit: Table oluşturma argümanında bir hata yapmışım şu an da saat gibi tıkır tıkır çalışıyor.
 

Geri
Yukarı