2016-10-09 9 views
2

私はPython Pandas DataframeをMySQLデータベースに書き込もうとしています。私はsqlalchemy for thisを使用することが可能であることを認識していますが、Pandasに組み込むのが簡単な別の方法があるのだろうかと思います。私はかなりの時間をForループでやろうとしましたが、それは実現不可能です。Pandas DataframeをMySQLに書き込む

誰かがより良い方法を知っていれば、非常に感謝しています。

ありがとうございます!

+0

to_sql方法http://stackoverflow.com/a/16477603/2027457又はhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas。 DataFrame.to_sql.html – sb0709

+0

to_sqlメソッドが役に立ちます。 ただし、SQLAlchemyの方が非難されるようです。 FutureWarning:DBAPI接続の 'my​​sql'フレーバーは廃止され、今後のバージョンでは削除される予定です。 MySQLはSQLAlchemy接続可能なものでさらにサポートされます。 chunkksize = chunksize、dtype = dtype) –

+0

これまでのところまだアクティブですので、少し時間がかかりますし、あなたがパンダをアップグレードしていない場合は動作しているはずです。答えを投稿する。 – sb0709

答えて

1

SQLAlchemyのに他の選択肢は0.18.1ドキュメントがまだアクティブであるパンダ to_sqlが、廃止されます解放将来ではなく、今のバージョンでを使用することができます。

パンダのドキュメントpandas.DataFrame.to_sqlによると、あなたは、次の構文を使用することができます:あなたは 'mysqlの'コンタイプ/モードと風味を指定

DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None) 

を、ここにいくつかの説明です:

con:SQLAlchemyエンジンまたはDBAPI2接続(レガシーモード) SQLAlchemyを使用すると、そのライブラリでサポートされているすべてのDBを使用できます。 DBAPI2オブジェクトの場合は、sqlite3のみがサポートされます。

フレーバー:{'sqlite'、 'mysql'}、デフォルト 'sqlite' SQLのフレーバーは になります。 SQLAlchemyエンジンを使用している場合は無視されます。 'mysql'は廃止され、 は将来のバージョンでは削除されますが、SQLAlchemyエンジンを通じてさらに がサポートされます。

0

あなたはpymysqlを使用することによってそれを行うことができます。たとえば

、あなたは次のユーザー、パスワード、ホストとポートを持つMySQLデータベースを持っていて、データベース「DATA_2」に書きたいとしましょう。あなたは、データベースがを作成していない場合は、データベースが既に存在する場合にも、有効な

conn = pymysql.connect(host=host, 
         port=port, 
         user=user, 
         passwd=passw, 
         db=database, 
         charset='utf8') 

data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql') 

conn = pymysql.connect(host=host, port=port, user=user, passwd=passw) 

conn.cursor().execute("CREATE DATABASE IF NOT EXISTS {0} ".format(database)) 
conn = pymysql.connect(host=host, 
         port=port, 
         user=user, 
         passwd=passw, 
         db=database, 
         charset='utf8') 

data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql') 

import pymysql 
user = 'root' 
passw = 'my-secret-pw-for-mysql-12ud' 
host = '172.17.0.2' 
port = 3306 
database = 'data_2' 

は、データベースがを作成し、あなたが既に持っている場合は

似たスレッド:

  1. Writing to MySQL database with pandas using SQLAlchemy, to_sql
  2. How to insert pandas dataframe via mysqldb into database?
関連する問題