pandasDataFrameからpostgesDBのテーブルにデータを書き込む最速の方法が気になります。
1)試しましたpandas.to_sql
が、何らかの理由でデータをコピーするにはエンティティが必要です。
2)私が以下を試した以外に:
import io
f = io.StringIO()
pd.DataFrame({'a':[1,2], 'b':[3,4]}).to_csv(f)
cursor = conn.cursor()
cursor.execute('create table bbbb (a int, b int);COMMIT; ')
cursor.copy_from(f, 'bbbb', columns=('a', 'b'), sep=',')
cursor.execute("select * from bbbb;")
a = cursor.fetchall()
print(a)
cursor.close()
しかし、それは空のリストを返します[]
。
だから私は2つの質問があります:Pythonコード(データフレーム)からpostgresDBにデータをコピーする最速の方法は何ですか?そして、私が試した2番目のアプローチで何が間違っていましたか?
2番目のアプローチは非常に高速である必要があります。
コードには2つの問題があります。
f
、ファイルの最後に配置されます。読み始める前に、自分の位置を最初に戻す必要があります。最終的なコードは次のようになります。
import io
f = io.StringIO()
pd.DataFrame({'a':[1,2], 'b':[3,4]}).to_csv(f, index=False, header=False) # removed header
f.seek(0) # move position to beginning of file before reading
cursor = conn.cursor()
cursor.execute('create table bbbb (a int, b int);COMMIT; ')
cursor.copy_from(f, 'bbbb', columns=('a', 'b'), sep=',')
cursor.execute("select * from bbbb;")
a = cursor.fetchall()
print(a)
cursor.close()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加