У меня сейчас есть код, он выполняет массовую вставку, но заранее обрезает таблицу.
cnn = self.connect()
# Initialize a string buffer
sio = StringIO()
# Write the Pandas DataFrame as a csv to the buffer
sio.write(df.to_csv(index=None, header=None, sep=';'))
# Be sure to reset the position to the start of the stream
sio.seek(0)
# Copy the string buffer to the database, as if it were an actual file
cursor = cnn.cursor()
cursor.execute(f'TRUNCATE {tabla}')
cursor.copy_from(sio, tabla,
columns=df.columns, sep=';', null="")
cnn.commit()
но теперь я хочу сохранить исторические данные, чтобы при появлении новых записей вводить, но при повторных поступлениях по дате, времени и заводу это обновляется
Какой самый оптимизированный и рекомендуемый способ сделать это? таким образом получая повторно используемый код для различных типов информационных фреймов.
Пример:
Dataframe1, with these columns = date;time;plant;value
Dataframe2, with these columns = date;time;plant;value1;value2
Dataframe3, with these columns = date;time;value
Можно ли заставить код работать для фреймов данных, передаваемых параметром в функцию, с различными структурами?