Почему INSERT не работает в Python SQLite3? - PullRequest
0 голосов
/ 03 апреля 2020

Итак, моя проблема заключается в следующем: я не могу вставить значение в строку, которая была None раньше. Предположим, есть 5 столбцов: a, b, c, d, e. e - это первичный ключ (установлен на autoincrement). Сначала я вставляю в строку значения для 3 столбцов (a, b, c). autoincrement вычисляется во время вставки, поэтому значение для e вставляется автоматически. На данный момент значение для d None. Затем я использую строку, добавленную к вычисленному первичному ключу, для вставки в ранее не вставленный столбец строки: d. Однако эта последняя вставка не работает.

После первой вставки значение для столбца d отображается как None в этой строке (как и должно быть). Но None остается даже после второй вставки.

Вот фрагмент:

c.execute(f'''INSERT INTO table(a, b, c) VALUES(?,?,?)''', (val_a, val_b, val_c))
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
val_d = 'string' + str(primary_key_of_previously_inserted_row)  //accessed via c.fetchall()
c.execute(f'''INSERT INTO table(d) VALUES('{val_d}')''')
conn.commit()
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
print(c.fetchall())  // this is where it prints the None which still persists after the second insert
conn.commit()

В чем здесь проблема?

1 Ответ

0 голосов
/ 03 апреля 2020

Я предлагаю вам попробовать выбрать c .execute (f '' 'SELECT * FROM table WHERE e = (' {primary_key_of_previously_inserted_row} ')' '')

, так как e является вашим основным полем и будет уникальным. У вас может быть запись, где val_b не уникален в вашей таблице. В каком случае это может быть запись в первый найденный экземпляр?

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