Eyvallah hocam youtube’dan konu hakkında birkaç video seyrettim, onları birbiri ile harmanladım biraz şimdi olayı daha iyi anladım. (Normalde video seyretme alışkanlığım yoktur) Videoları bulamadım. Newipe kullanıyor ve geçmiş tutmuyorum. Videolarda hem İngilizce, hem de baaşlıkları konudan bağımsızdı tam hatırlamıyorum. Bu sebeple videoları paylaşamıyorum.
Lakin kafama şimdi de FOREIGN KEY takıldı. Ne yaptıysam olması gerektiği gibi çalıştıramadım. Hangi denediğimi örnek atsam bilemiyorum ama şu daha uygun gibi:
SQL sorgu da (DB Browser) da SQL kodunu yürütünce hata veriyorda, aynısını pythonda yapınca olmayan staff_id’i ekliyor. Yani hata vermiyor. (Hop ne ediysun sen yok Staff listesinde böyle bir id demiyor.) Aradım taradım olan çoğu kaynağı denedim hiç biri SQL kodunu yazdığımdaki gibi hata vermiyor, yani olmayan id’i yazınca bile ekliyor.
db.execute("CREATE TABLE IF NOT EXISTS User (\
id INTEGER PRIMARY KEY AUTOINCREMENT,\
username varchar,\
email varchar,\
password text,\
staff_id INTEGER,\
statu_id INTEGER,\
FOREIGN KEY(staff_id) REFERENCES Staff(id),\
FOREIGN KEY(statu_id) REFERENCES Statu(id))"
)
db.execute("CREATE TABLE IF NOT EXISTS Staff (\
id INTEGER PRIMARY KEY AUTOINCREMENT,\
name varchar,\
surname varchar,\
phone INTEGER)"
)
Python kodu
def add_user(self, username, email, password, staff_id, statu_id):
database.db.execute("INSERT INTO user VALUES (NULL, ?, ?, ?, ?, ?)",
(username, email, password, staff_id, statu_id))
database.db.commit()
Dene().add_user("dene1", "dene2@yandex.com", "dene3", 1, 7)
> 7 diye bir id adresi yok normal şartta hata vermesi gerekmez mi?
SQL KODU
INSERT INTO user VALUES (NULL, "iue", "iuea", "uieauea", 8, 9)
SQL ÇIKTISI
Yürütme hatalarla tamamlandı.
Sonuç: FOREIGN KEY constraint failed
1. satırda:
INSERT INTO user VALUES (NULL, "iue", "iuea", "uieauea", 8, 9)