最近、Python を使用して CSV を読み書きしてデータベースを保存するときに遭遇したさまざまな問題をまとめてみましょう。
推奨される関連する mysql ビデオ チュートリアル: "mysql チュートリアル"
アップロードされたコード:
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' con = MySQLdb.connect(host=host,charset="utf8",port=port,db=db,user=user,passwd=password) try: df = pd.read_sql(sql=r'select * from city', con=con) df.to_sql('test',con=con,flavor='mysql') except Exception as e: print(e.message)
予期しないことが何も起こらない場合は、次のように出力されます: データベース フレーバー MySQL はサポートされていません
stackoverflow で答えを見つけました: フレーバー「mysql」は pandas バージョン 0.19 で非推奨になりました。
別の方法に変更しましょう:
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_sql(sql=r'select * from city', con=engine) df.to_sql('test',con=engine,if_exists='append',index=False) except Exception as e: print(e.message)
実行してください。DataFrame のインデックスを列として保存するかどうかを示すインデックス パラメーターを保存できます。必要ないので、値を False に代入します
これで問題は解決したように見えますが、まだ小さな問題が残っています。
中国語の文字を含む CSV ファイルがあるとします (私のウィンドウ):
名前 年齢 クラス
Xiao Ming 15 1年生
Xiao Zhang 18 3年生
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv') print(df) df.to_sql('test', con=engine, if_exists='append', index=False) except Exception as e: print(e.message)
印刷後に文字化けが発生します。 CSV を読み取るときは、エンコーディングを指定するのが最善です。私のローカル GBK:
df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv',encoding='gbk')
情報は正常に出力できますが、エラーは次のとおりです:
UnicodeEncodeError: 'latin-1' codec can位置 0-1 の文字をエンコードしません: 序数が範囲 (256) にありません
その理由は、データベースに保存するときにエンコードを指定しなかったためです。私もこの問題を解決しようとしていたときに騙されました。インターネット上にあるものはすべて入手可能です。プロセスには立ち入りません。コードを見てください:
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
解決済み
関連記事:
Pythonデータ分析のための実際のIPリクエストPandasの詳細な説明
Pandasによるcdnログ分析の詳細な説明Python のライブラリ
Python の pandas フレームワークを使用して Excel ファイル内のデータを操作するチュートリアル
以上がPython は Pandas を使用して CSV ファイルを読み取り、MySQL に書き込みますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。