データベースに接続しています(pyodbcを使用しています)、新しいテーブルにdfをコミットする必要があります。私はこれをSQLでやったことがありますが、dfでそれをやる方法はわかりません。どのようにDFのために働くように、以下のコードを変更する上で任意のアイデア? SQLのためのpyodbcを使ってdfをSQLデータベースにコミットする方法は?
コード:
import pyodbc
import pandas as pd
conn= pyodbc.connect(r'DRIVER={Teradata};DBCNAME=foo; UID=name; PWD=password;QUIETMODE=YES;Trusted_Connection=yes')
cursor = conn.cursor()
cursor.execute(
"""
CREATE TABLE SCHEMA.NEW_TABLE AS
(
SELECT ... FROM ....
)
"""
)
conn.commit()
私は、エラーをこのコードを試したが、データベース内に作成していない:
import pyodbc
import pandas as pd
conn= pyodbc.connect(r'DRIVER={Teradata};DBCNAME=foo; UID=name; PWD=password;QUIETMODE=YES;Trusted_Connection=yes')
sheet1.to_sql(con=conn, name='new_table', schema='Schema', if_exists='replace', index=False)
既に[pandas.DataFrame.to_sql](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html)のドキュメントをご覧になりましたか?それは少なくともアイデアを得るための方法だろうか? Esp。 SQLAlchemyエンジンは私に有望ですが、表面的に見ているかもしれません;-) – Dilettant
この特定のSQL(CREATE TABLE .. AS SELECT ...)について質問しているのであれば、コミットする必要はありませんそれはDDLですから、常に暗黙のコミット(少なくとも私が知っている[Oracle、MySQL、MS SQL]のすべてのRDBMSはこのようにしてください)が必要です。 @Dilettantが既に述べたように、より一般的な解決策は、 'to_sql()'を見てください - それはあなたのためにコミットします。しかし、私はpandasによって正式にサポートされているので、 'pyODBC'の代わりにSQLAlchemyを使用します – MaxU
私は.to_sqlを使用しようとしましたが、おそらくそれを間違って使用しました...ここで私が試したのは: sheet1.to_sql(con = conn、name = 'new_table'、schema = 'スキーマ'、if_exists = 'replace'、index = False) – nonegiven72