Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
0
Cevap
277
Tıklama
0
Öne Çıkarma
SQLite3 NOT NULL constraint failed sorunu Python
E
7 yıl
Er
Konu Sahibi

Merhabalar;
Ufak bir program yazmaya çalışıyorum ancak veri tabanında FOREIGN KEY ile PRIMARY KEY bağlantısında sorun yaşıyorum.
Kodları aşağıya ekliyorum

Özetle durum şu
3 tane tablom var

##urunler## ##fiyatlar## ##marketler##
PK *urun_no PK *fiyat_no PK *market_no
barkod_no fiyat market_adi
urun_adi FK market_no sube_adi
FK fiyat_no

kaydı oluşturmak için ; barkod_no, urun_adi, market_adi, sube_adi, fiyat bilgileri giriliyor.

Bu sırada oluşan marketler tablosundaki market_no bilgisinin fiyatlar tablosundaki market_no sütununa ,
fiyatlar tablosundaki fiyat_no bilgisinin urunler tablosundaki fiyat_no sütununa otomatik olarak kaydolmasını istiyorum.


Bunun için aşağıdaki gibi bir tablo oluşumu yazdım.
*Kayıt kodları da bir aşağıda.

Bunu çalıştırıp kaydet dediğimde "sqlite3.IntegrityError: NOT NULL constraint failed: fiyatlar.market_no" hatasını alıyorum.

Nerede yanlış yaptım yardımcı olabilir misiniz?



veriler.execute("CREATE TABLE IF NOT EXISTS "
"marketler(market_no INTEGER PRIMARY KEY AUTOINCREMENT, "
"market_adi VARCHAR, "
"sube_adi VARCHAR)")
veriler.execute("CREATE TABLE IF NOT EXISTS "
"fiyatlar(fiyat_no INTEGER PRIMARY KEY AUTOINCREMENT, "
"fiyat FLOA,"
"market_no INTEGER NOT NULL , FOREIGN KEY (market_no) REFERENCES marketler(market_no))")
veriler.execute("CREATE TABLE IF NOT EXISTS "
"urunler(urun_no INTEGER PRIMARY KEY AUTOINCREMENT, "
"barkod_no VARCHAR, "
"urun_adi VARCHAR,"
"fiyat_no INTEGER NOT NULL , FOREIGN KEY (fiyat_no) REFERENCES fiyatlar(fiyat_no))")


*KAYIT OLUŞTURMAK İÇİN YAZDIĞIM KODLAR

veriler.execute("INSERT INTO marketler(market_adi, sube_adi) VALUES ('{}', '{}')".format(market_adi.get(), sube_adi.get()))
veriler.execute("INSERT INTO fiyatlar(fiyat) VALUES('{}')".format(fiyat.get()))
veriler.execute("INSERT INTO urunler(barkod_no, urun_adi) VALUES ('{}' , '{}')".format(barkod_no.get(), urun_adi.get()))
baglan.commit()






DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.