@pypyshka

Как правильно записать данные в две таблицы БД SQLite?

Добрый день!

Подскажите, пожалуйста, как правильно сделать запросы в данном случае. Есть два списка:
a = [('1', '2', '3')]
b = [('a', 'b', 'c'), ('x', 'y', 'z')]

В БД есть две таблицы:
table_a:
id | value1 | value2 | value 3 - здесь id - первичный ключ с автоинкрементом

table_b:
id | value1 | value2 | value 3

Соответственно делаю запросы:
query_a = "INSERT INTO table_a (value1, value2, value 3) VALUES (?, ?, ?)"
query_b = "INSERT INTO table_b (value1, value2, value 3) VALUES (?, ?, ?)"
cur.executemany(query_a, a)
cur.executemany(query_b, b)

и получаю:
table_a:
id | value1 | value2 | value 3
1 | 1 | 2| 3

table_b:
id | value1 | value2 | value 3
- | a | b | c
- | x | y | z

А как правильно сделать, чтобы в table_b в поле id бралось значение id из table_a, то есть чтобы получить:
table_b:
id | value1 | value2 | value 3
1 | a | b | c
1 | x | y | z
  • Вопрос задан
  • 732 просмотра
Решения вопроса 1
DDDsa
@DDDsa
Если я правильно понял задачу,
query_a = "INSERT INTO table_a (value1, value2, value 3) VALUES (?, ?, ?)"
cur.execute(query_a, a[0])
last_id = cur.lastrowid

теперь значение переменной last_id можно подставлять во второй инзерт
Или так:
query_a = "INSERT INTO table_a (value1, value2, value 3) VALUES (?, ?, ?)"
cur.executemany(query_a, a)
cur.execute('SELECT last_insert_rowid()')
last_id = cur.fetchone()[0]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы