SQLAlchemyとPandasを使いスムーズにCSVファイルを作成する

投稿日2019年6月24日 / 更新日2019年10月31日



今回はSQLAlchemyとPandasを使いCSVファイルを作成していきたいと思います。


データベースの種類は豊富であれもこれもと操作するのはキャパシティ的に限界なところがある。そんな苦労も和らげてくれるツールがPythonのサードパーティであるSQLAlchemyです。


SQLAlchemyを使えばSQLiteはもちろんMySQLやPostgreSQLといった各データベース操作を簡単に行えるようになります。


私の場合はMySQLを使用しているので接続させるためにPyMySQLをSQLAlchemyのドライバとして使用していきます。


今回使用するモジュールは以下になります。



$ pip3 install sqlalchemy
$ pip3 install pymysql
$ pip3 install pandas



【目次】



SQLAlchemyの操作


まずは必要なモジュールをインポートし各種操作を簡単に見て行きます。


インポートしたらデータベースへ接続します。



import sqlalchemy as sa

"""pymysqlドライバを使いuser名をroot、パスワードを入力し
host、port、データベース名を入力する"""
db = 'mysql+pymysql://root:password@127.0.0.1:3306/dbname'

"""接続し変数に渡す"""
engine = sa.create_engine(db)



接続されたのでさっそくテーブルを取得してみます。



tb = engine.execute('show tables')

"""for文で中身を取り出します"""
for i in td:
print(i)

......
......
('blogs_blog',)
('blogs_category',)
.......
.......



execute()の引数にSQLクエリを渡す事によって接続されているデータベースの操作を行う事が出来ます。



"""データベースの確認"""
td = engine.execute('show databeses')

"""データベースの選択"""
engine.execute('use dbname')

"""テーブル内のデータを取得"""
td = engine.execute('select * from blogs_blog')



PandasでCSVファイルを作成する


それではSQLAlchemyからデータを取得し、それをPandasのDataFrameに渡し少し修正してからCSVにしたいと思います。


先ほどの続きとしまして、pandasをインポートします。



import pandas as pd

"""目当てのデータを取得する"""
td = engine.execute('select id, title from blogs_blog')

"""pandasのデータフレームに渡す"""
df = pd.DataFrame(td)

"""0~4行目までを取得"""
df.head()



カラム名(列名)がデフォルトで番号付けされているのでそれぞれ新しく名前付けします。



"""renameとすることで既存の名前を変更することが出来ます"""
"""名前の変更は辞書型で渡し、inplace=Trueにより反映されます"""
df.rename(columns={0:'ID', 1:'Title'}, inplace=True)



最後にCSVファイルとして保存します。



"""保存"""
df.to_csv('dbname.csv')

"""読み込み"""
df = pd.read_csv('dbname.csv')

"""中身の確認"""
df.head()



以上でSQLAlchemyとPandasを使ったCSVファイルの作成を終わります。


他にも色々な使い方があるので遊んでみましょう。


最後までご覧いただきありがとうございます。


トップページに戻る

Follow @kenno_w