Ubuntu Desktop 22.04 LTS ノウハウ
Pythonで
MariaDBからデータを読んでCSVに書き出す
Pythonで
MariaDBからデータを読んでCSVに書き出す
データ分析の準備として、データベースの中身を「Python」でCSVに書き出してみる。
以下、MariaDBからデータを読んでCSVにエクスポートする Python プログラムを記録。
スポンサー リンク
目 次
1. 事前準備
PythonからMySQLに接続するために、「mysql-connector-python」ライブラリをインストールする。
pip install mysql-connector-python
MariaDBサーバへの接続。
sudo su
mysql -u root
mysql -u root
データベースの選択。
use ondodb;
作成済みのテーブル一覧を表示。
show full tables;
テーブルのカラム一覧を表示。
show columns from ondo_situdo;
describe ondo_situdo;
describe ondo_situdo;
2. CSVへの出力結果とPythonソースコード
Pythonのソースコード
# -*- coding: utf-8 -*-
import csv
import mysql.connector
# MariaDBへの接続設定
db_config = {
'host': 'localhost',
'user': 'flaskpy',
'password': 'dht22x4',
'database': 'ondodb'
}
# CSVファイルに書き出す際のファイルパス
csv_file_path = 'work/ondo_situdo_01.csv'
# MariaDBへの接続
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
try:
# データの取得クエリ
query = 'SELECT * FROM ondo_situdo'
cursor.execute(query)
# 取得したデータをCSVファイルに書き出す
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:
csv_writer = csv.writer(csv_file)
# ヘッダーを書き込む
csv_writer.writerow([i[0] for i in cursor.description])
# データを書き込む
csv_writer.writerows(cursor.fetchall())
print(f'Data exported to {csv_file_path}')
except Exception as e:
print(f'Error: {e}')
finally:
# 接続を閉じる
cursor.close()
conn.close()
3. Python プログラムのポイント
Pythonでの例外処理:try-except
Pythonでは「try-except」で「例外処理(exception)」を記述しておくと、予期せぬエラーを未然に防ぐことができる。文法的に正しいコードを書いても、実行時にエラーが発生することがあり、これが「例外」である。
try:
例外が発生するかもしれないが
except エラー名:
例外発生時に行う処理
テーブルに含まれるカラムの情報を取得する:cursor.description
cursor.description は、SQLクエリの実行結果から取得された結果セットのメタデータを含むオブジェクトで、取得したデータの各列に関する情報が抽出できる。
cursor.description から返されるオブジェクトは、次のようなタプルのリストで、
各タプルには列に関する情報が含まれる。
name: 列の名前
type_code: 列のデータ型のコード
display_size: 列のデータを表示するために必要な最大の文字数
internal_size: 列の内部的なデータ型のサイズ
precision: 数値列の精度(有効桁数)
scale: 数値列のスケール(小数点以下の桁数)
null_ok: 列がNULLを許可する場合はTrue
# ヘッダーを書き込むコード。
csv_writer.writerow([column[0] for column in cursor.description])
cursor.description から各列の名前 (name属性) を抽出し、それをCSVファイルのヘッダーとして書き込むための行で、列の名前がCSVファイルのヘッダー行として最初の行に書き込まれる。
以上。
(2024.02.21)
スポンサー リンク