2
こんにちは 私の職場の顧客データベースのこの小さなフロントエンドを書いています。私たちは、顧客や仕事やものを追跡するために、軽くてシンプルなものが必要でした。外部キーを使用したPython + SQlite3
私はPythonとSQLを同時に学習しているので混乱していますが、私が続行する前に、外来キーの関係部分全体を円滑に処理したいと考えています。だから今、私は「ジェフ」に割り当てられた2つのタスクを持っている
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
cur.execute('''CREATE TABLE customers (custid INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, phone TEXT, email TEXT, notes TEXT)''')
cur.execute('''CREATE TABLE tasks (taskid INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, notes TEXT, taskcust INTEGER, FOREIGN KEY(taskcust) REFERENCES customer(custid))''')
cur.execute('''INSERT INTO customers (name, phone, email, notes) VALUES('Jeff', '555555', '[email protected]', 'balblalal')''')
cur.execute('''INSERT INTO tasks (title, notes, taskcust) VALUES ('Toshiba A200', 'replace RAM, add 2 gigs', 1)''')
cur.execute('''INSERT INTO tasks (title, notes, taskcust) VALUES ('WD External HDD', 'Diagnose, tick of death, hdd probably dead', 1)''')
:私は何をしたいか
は1人の顧客ここ
に割り当てられた多数のタスクを持つことができるのは、一例です。 Jeffの連絡先情報と彼の仕事をすべて印刷したいのですが?
cur.execute('''SELECT * FROM customers where custid=1''')
for row in cur:
for i in row:
print i
cur.execute('''SELECT * FROM tasks WHERE taskcust=1''')
for row in cur:
for i in row:
print i
私はそうしていますか?
おかげでインデントはちょうどタイプミスでした:)ちょうど私が正しくそれをやっていることを確認したかった。 –
それは私が考えたものです。 データベースシステムによっては、外部キーが強制されるため、タスクを挿入しようとすると特定のIDを持つ顧客が存在しないとDBがエラーをスローする可能性があります。 – mklauber
私は外部キーが適切に強制されていないと考えています。私は存在しない顧客のために仕事をすることができます。顧客を削除すると、彼に割り当てられたタスクは残ります:Sは外国人が通常の整数列のように働いているようです... –