@Goobee

Как сделать так чтобы данные перезаписывались, а не добавлялись новые?

При повторном включении кода, данные повторно добавляются в базу данных. Как избежать этого?
with open('autodoor.xml', 'rb') as file:
    var = xmltodict.parse(file)
    df = pd.DataFrame(var)
    open_file = var['table']['fillings']['filling']
    keys = ['time', 'user_name', 'rfid_key', 'litre', 'type']
    for i in open_file:
        items = list(map(i.get, keys))
        cursor.execute("INSERT INTO benz VALUES (?, ?, ?, ?, ?)", items, )
  • Вопрос задан
  • 1774 просмотра
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Ты используешь pandas датафрейм, потом начинаешь чего то изобретать. Pandas фрейм имеет метод to_sql https://pandas.pydata.org/docs/reference/api/panda.... Ему надо передать имя таблицы, объект соединения, так же у него есть параметр if_exists, которому можно присвоить значение replace. И будет перезапись.

Раз уж у тебя есть фрейм то и оставайся в рамках датафрема сформируй необходимый подсет. И без cursor.execute отправляй в любую базу в том числе и в sqlite.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Daemon23RUS
@Daemon23RUS
"INSERT INTO benz VALUES (?, ?, ?, ?, ?)"
заменить на UPDATE ..... https://www.sqlite.org/lang_update.html
P.S или использовать INSERT ..... ON CONFLICT(ключевое_поле) https://www.sqlite.org/lang_conflict.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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