###前提・実現したいこと
pythonのpandasのDataframeをMysqlに保存したいです。
テーブルへの新規書込と追加書込(カラム追加なし)は出来ましたが、カラムを追加した場合の処理方法がわかりません。
カラムを追加する処理が必要なのでしょうか?
よろしくお願いします
###処理の背景
DataFrameにて複数のデータを読み込み、結合。最後にまとめてMysqlに書き込むつもりだったが、データが大きすぎメモリが足りなくなり、随時Mysqlに書き込む処理に変更。カラム数は1200以上あり、複数のデータを読み込む毎に増えていく。
###発生している問題・エラーメッセージ
InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'E' in 'field list'") [SQL: 'INSERT INTO sample_sqlalchemy (`A`, `E`) VALUES (%(A)s, %(E)s)'] [parameters: ({'A': 'd7', 'E': 'e7'}, {'A': 'd8', 'E': 'e8'}, {'A': 'd9', 'E': 'e9'})]
###該当のソースコード
df4で'e'を追加してエラーが発生しています。
実際のコードは投稿できないので、サンプルで投稿させていただきました。
python
1import pandas as pd 2from sqlalchemy import create_engine 3 4 5df = pd.DataFrame({'A':['A1','A2','A3'], 6 'B':['B1','B2','B3'], 7 'c':['c1','c2','c3'] 8 }) 9df2 = pd.DataFrame({'A':['A4','A5','A6'], 10 'B':['B4','B5','B6'], 11 'c':['c4','c5','c6'] 12 }) 13df3 = pd.DataFrame({'A':['A7','A8','A9'], 14 'B':['B7','B8','B9'] 15 }) 16df4 = pd.DataFrame({'A':['d7','d8','d9'], 17 'E':['e7','e8','e9'] 18 }) 19 20table_name = "sample_sqlalchemy" 21db_settings = { 22 "host":'localhost', 23 "database":'test_db', 24 "user":'root', 25 "password":'pass', 26 "port":3306 27} 28engine = create_engine('mysql+pymysql://{user}:{password}@{host}:{port}/{database}'.format(**db_settings)) 29df.to_sql(table_name, engine,if_exists='replace', index=False) 30df2.to_sql(table_name, engine,if_exists = 'append', index=False) 31df3.to_sql(table_name, engine,if_exists = 'append', index=False) 32df4.to_sql(table_name, engine,if_exists = 'append', index=False)
###試したこと
ネット検索しましたが、PANDASからのSQL書込は記事が少なくお手上げです。
###補足情報(言語/FW/ツール等のバージョンなど)
Python 3.5.2 :: Anaconda custom (64-bit)
sqlalchemy 1.1.4
pandas 0.19.2
pymysql 0.7.9

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/24 10:44