База данных поддерживает все данные - PullRequest
0 голосов
/ 11 ноября 2018

имея DataFrame df, как мне лучше всего подойти для загрузки этих данных в базу данных postgres?

Я использую следующий код для загрузки данных - это кажется очень эффективным (намного больше, чем pd.to_sql):

def to_sql(engine: sqlalchemy.engine, df: pd.DataFrame, table, if_exists='append', sep='\t', encoding='utf8'):
    # df[:0].to_sql(table, engine, if_exists=if_exists) # Not needed as the table has to exist

    output = StringIO()
    df.to_csv(output, sep=sep, header=False, encoding=encoding, index=False)
    output.seek(0)

    connection = engine.raw_connection()
    cursor = connection.cursor()
    cursor.copy_from(output, table, sep=sep, null='', columns=list(df.columns))
    connection.commit()
    cursor.close()

Когда я думаю об UPSERT, данные, однако, подобный подход явно не работает.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...