@paxa-1331

SQLite + Python, как проверить есть ли данные в базе?

Есть данные, которые мы получаем в результате цикла

res = []
    for i in r4:
        res += {i["Id"]}
print(res)

в res содержится: [40065, 40064, 40063, 40062, 40061, 40060, 40059, 40058, 40057, 40056, 40053, 40052, 40051, 40048, 40045, 40041, 40037, 40034, 40033, 40032, 40020, 40018, 40013, 39992, 39879]

необходимо понять есть ли данные в базе данных данных (соответственно по штучно)

c.execute(f'SELECT id FROM Zayavka WHERE id = {res}')


Если данные есть, то пропустить.

Не могу понять, это через цикл делается или нет :( , гуру, подскажите :)
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
@o5a
Проще всего в цикле перебирать значения и для каждого без проверки просто запускать запрос на вставку, используя дополнительное on conflict - он позволит игнорировать команду при наличии этого значения в базе.
for n in res:
    c.execute('INSERT INTO Zayavka(id) VALUES(?) ON CONFLICT(id) DO NOTHING', (n, ) )


Вместо цикла можно использовать c.executemany, который сам последовательно применит команду ко всем элементам списка, но это должен быть вложенный список, где каждый элемент - набор данных для одной строки, т.е.
res = [[40065], [40064]]
c.executemany('INSERT INTO Zayavka(id) VALUES(?) ON CONFLICT(id) DO NOTHING', res )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы