Взаимосвязь таблиц в SQLite3 Python
Не могу разобраться в объединение таблиц в sqlite3 на python. Сколько не искал, как не вбивал в поиск, то везде пишут одно и то же, а именно написать данную строку после подключения к БД:
connection.execute('PRAGMA foreign_keys = 1') #вместо 1 использовал так же True и ON
И в создание таблиц написать в одной из них взаимосвязь, что я и сделал
cursor.execute('''
CREATE TABLE IF NOT EXISTS Users (
id INTEGER PRIMARY KEY,
chat_id INTEGER,
username TEXT NOT NULL
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS Events (
id INTEGER PRIMARY KEY,
date TEXT NOT NULL,
time TEXT NOT NULL,
name_event TEXT NOT NULL,
user_id INTEGER,
FOREIGN KEY (user_id) REFERENCES Users (id) #так же дописывал настройки по типу ON DELETE и ON UPDATE с доп настройками
)
''')
Заполнял таблицы с помощью функций и команд по типу
# Таблицы Users
cursor.execute('INSERT INTO Users (chat_id, username) VALUES (?, ?)', (63789, 'Maxim'))
#Таблица Events
while True:
uid = int(input('Какого пользователя выбрать?\n'))
date = input('Когда мероприятие?\n')
timeD = input('Во сколько мероприятие?\n')
name_event = input('Что за мероприятие?\n')
cursor.execute('INSERT INTO Events (date, time, name_event, user_id) VALUES (?, ?, ?, ?)', (date, timeD, name_event, uid))
Exit = input('Закончить? y/n')
if Exit == 'y':
break
elif Exit == 'n':
pass
В итоге хотел получить возможность, удалив данные пользователя из таблицы Users, удалить связанные с ним данные с помощью user_id из таблицы Events
Может я не правильно заполнял таблицы или что-то другое не так сделал.
Прошу помочь кто знает как решить мою проблему
Ответы (1 шт):
В итоге решение нашлось слишком легко. Все то, что писали в поисковике на разных сайтах верно. Единственное, что там не уточнили, так это то, что если БД была уже создана, а вы хотите в ней связать таблицы, то надо создавать новую БД с настройками, тк иначе будете как и я гадать.