как сделать массовую вставку с помощью python и psycopg2 - PullRequest
0 голосов
/ 04 июля 2019

У меня сейчас есть код, он выполняет массовую вставку, но заранее обрезает таблицу.

        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

Можно ли заставить код работать для фреймов данных, передаваемых параметром в функцию, с различными структурами?

...