1. ホーム
  2. python

[解決済み] PostgresのテーブルにDataFrameを書き込むには?

2022-06-10 21:38:14

質問

あるのは データフレーム.to_sql メソッドがありますが、これは mysql, sqlite, oracle データベースに対してのみ動作します。このメソッドにpostgresの接続やsqlalchemyのエンジンを渡すことはできません。

どのように解決するのですか?

pandas 0.14(2014年5月末リリース)より、postgresqlがサポートされました。そのため sql モジュールが sqlalchemy を使って、異なるデータベースフレーバーをサポートするようになりました。postgresql データベースのために sqlalchemy エンジンを渡すことができます ( docs ). 例.

from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
df.to_sql('table_name', engine)


pandasの0.13.1までのバージョンではpostgresqlはサポートされていないのは正しいです。古いバージョンのpandasを使用する必要がある場合は、以下のパッチを適用した pandas.io.sql : https://gist.github.com/jorisvandenbossche/10841234 .

これは昔書いたものなので、常に動作することを完全に保証するものではありませんが、基本はあるはずです)。そのファイルを作業ディレクトリに置いて、インポートすれば、(ここで con はpostgresqlの接続です)。

import sql  # the patched version (file is named sql.py)
sql.write_frame(df, 'table_name', con, flavor='postgresql')