データベースデータをExcelテーブルにエクスポートすることも、非常によく使用される機能であると言えます。結局のところ、誰もがデータベース操作ステートメントを理解しているわけではありません。
まず完成したエフェクトを見てみましょう。
データソース
エクスポート結果
依存関係
Pythonで実装されているため、Python環境のサポートが必要です
Python2.7.11
私のPython環境は2.7.11です。バージョン 3.5 を使用している可能性がありますが、考え方は同じです。
xlwtpip install xlwt
MySQLdbpip install MySQLdb
上記の方法が失敗した場合は、sourceforge 公式 Web サイトにアクセスして Windows 上で msi バージョンをダウンロードするか、ソース コードを使用して自分でコンパイルすることができます。
データベース関連
この実験では、データベース関連は実際に Python を使用してデータベースを操作する方法であり、知識ポイントは非常に少なく、今回使用した簡単なステートメントは次のとおりです。
Connect
conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')
ここで最後に言及する価値があるのは、パラメータを使用しないと、データベースから取り出したデータが文字化けします。文字化けの問題については、まだ分からない方はこちらの記事を読んでみると良いかもしれません エンコード、デコード、文字化けについての簡単な説明
フィールド情報の取得
fields = cursor.description
カーソルに関しては、私たちのデータベース運用の中核です。カーソルの特性は、データを一度走査すると、元に戻すことができないことです。ただし、その位置を手動で変更することもできます。
cursor.scroll(0, mode='absolute') でカーソルの位置をリセット
データの取得
データの取得はさらに簡単ですが、データ項目は二次元に近い存在であることを心の中で理解しておく必要があります配列。各セル項目を取得する際には注意が必要です。
results = cursor.fetchall()
Excelの基本
同様に、ここでもPythonを使ってExcelデータを操作する方法について説明します。
ワークブック
私たちの仕事の基礎となるワークブックの概念を明確にする必要があります。以下のシートに対応するワークブックは、シートが依存するキャリアです。
workbook = xlwt.Workbook()
シート
すべての操作はシート上で実行されます。
sheet = workbook.add_sheet(‘table_message’,cell_overwrite_ok=True)
ワークブックとシートの場合、これが少し曖昧な場合。これを仮定してみましょう。
日常生活で会計を行うとき、私たちは皆、ワークブックである家計簿を持っています。私たちの会計は次々と表に記録されており、その表が私たちが目にするシートです。元帳には多数のテーブルを含めることも、1 つのテーブルだけを含めることもできます。これは理解しやすいでしょう。 :-)
ケース
下の小さなケースを見てください。
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from message') print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果results = cursor.fetchall()# 获取MYSQL里面的数据字段名称fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(r'./readout.xlsx')
カプセル化
使いやすさを考慮して、呼び出しやすい関数にカプセル化されています。
カプセル化後
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb def export(host,user,password,dbname,table_name,outputpath): conn = MySQLdb.connect(host,user,password,dbname,charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from '+table_name) print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果 results = cursor.fetchall() # 获取MYSQL里面的数据字段名称 fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_'+table_name,cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(outputpath) # 结果测试 if __name__ == "__main__": export('localhost','root','mysql','test','datetest',r'datetest.xlsx')
テスト結果
id name date 1 dlut 2016-07-06 2 清华大学 2016-07-03 3 北京大学 2016-07-28 4 Mark 2016-08-20 5 Tom 2016-08-19 6 Jane 2016-08-21
以上がPython を使用してワンクリックでデータベースを Excel テーブルにエクスポートする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。