Python + SQlite3, используя внешние ключи - PullRequest
2 голосов
/ 04 января 2011

Привет Я пишу этот маленький интерфейс для базы данных клиентов для моего рабочего места. Нам просто нужно что-то легкое и простое, чтобы отслеживать клиентов, задачи и прочее.

Это немного сбивает с толку, потому что я одновременно изучаю python и SQL, но я бы хотел, чтобы вся работа с отношениями с внешними ключами работала гладко, прежде чем я продолжу.

То, что я хочу сделать, - это иметь возможность назначать много задач одному клиенту

вот пример:

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', 'jeff@foo.com', '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)''')

Итак, теперь у меня есть 2 задания для Джеффа. Что если я захочу распечатать контактную информацию Джеффа и все его задачи?

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

я правильно делаю?

1 Ответ

2 голосов
/ 05 января 2011

Не отступайте

    for row in cur:
        for i in row:
            print i

ниже cur.execute('''SELECT * FROM tasks WHERE taskcust=1''')

Кроме того, я думаю, что все работает так, как вы хотите.Внешние ключи полезны, потому что теперь, если вы хотите найти клиента, который попросил вас «заменить оперативную память, добавьте 2 гигабайта», вы можете отследить его до записи клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...