У меня есть некоторые проблемы с записью фрейма данных в таблицу postgres.
Что мне нужно сделать, это следующее: мне нужно сохранить pandas df как таблицу Postgres и завтра, когда будет создан новый pandas df (может иметь больше илименьше столбцов, чем в df предыдущего дня) Мне нужно удалить таблицу Postgres, сохраненную вчера, и записать сегодняшнюю таблицу в Postgres.Из-за непоследовательного количества столбцов я не могу написать DDL для таблицы.
Я попробовал следующее:
import pandas as pd
import psycopg2
import sqlalchemy
from sqlalchemy import *
conn = psycopg2.connect("host=localhost dbname=postgres user=postgres password=passforpostgre")
cur = conn.cursor()
engine = sqlalchemy.create_engine('postgresql://passforpostgre@localhost')
df = pd.DataFrame([['user1','adress1'], ['user2','adress2'], ['user3','adress3']], columns=["name", "address"])
df.to_sql('test_table', con=engine, if_exists='append')
sqlalchemy.delete('df3')
# cur.execute('DROP TABLE "%s";' % 'test_table')
И затем я отбрасываю один столбец (как, возможно, у меня будет другой день)
df2.drop('address', 1)
d2.to_sql('test_table', con=engine, if_exists='append')
Но это не такНе имеет значения, если я использую delete или DROP TABLE, таблица не удаляется из схемы.Но я не могу открыть его, он просто долго запрашивает ...
Может кто-нибудь предложить мне наиболее подходящий способ сделать это?
Спасибо