なぜあなたはそのようにこれをやっているのですか?短い方法があります:if_exists
kwagがto_sql
にあります。これを試してみてください:
import pandas.io.sql as psql
from sqlalchemy import create_engine
engine = create_engine(r'postgresql://[email protected]:port/dbname')
c = engine.connect()
conn = c.connection
sql = """
select * from some_table limit 1;
"""
df = psql.read_sql(sql, con=conn)
print df.head()
# Notice how below line is different. You forgot the schema argument
df.to_sql('a', con=conn, schema=schema_name, if_exists='replace')
conn.close()
docsによると:表が存在する場合は、それをドロップし、それを再作成し、データを挿入します。
交換してください。
Psと。追加のヒントは:それはあなたのプログラムがエラーで終了した場合でも、あなたの接続が常に閉じていることを保証しているので
with engine.connect() as conn, conn.begin():
sql = """select * from some_table limit 1"""
df = psql.read_sql(sql, con=conn)
print df.head()
df.to_sql('a', con=conn, schema=schema_name, if_exists='replace')
:
これは、接続を処理するための良い方法です。これは、データの破損を防ぐために重要です。さらに、私はちょうどこれを使用します:
import pandas as pd
...
pd.read_sql(sql, conn)
あなたがそれをやっているのではなく。
私はそのコードを書いて、あなたのところにあったのであれば、それは次のようになります。
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine(r'postgresql://[email protected]:port/dbname')
with engine.connect() as conn, conn.begin():
df = pd.read_sql('select * from some_table limit 1', con=conn)
print df.head()
df.to_sql('a', con=conn, schema=schema_name, if_exists='replace')
、これは新しいものである場合、私は知りませんが、どうやらパンダは(今)も使用することができますエンジン。例えば。 'df.to_sql( 'a'、con = engine、schema = schema_name、if_exists = 'replace')' – n1000