[Python] 343 MySQL自動検索

[M1 Mac, Big Sur 11.7.2, Python 3.10.4, MySQL 8.0.31]

MySQLを起動、ログイン、データベース選択、検索まで自動的に行うスクリプトを作成しました。

処理時間はphpMyAdminよりも24%長く掛かってしまいました。

データベースを作ってしまえばあとは検索するだけなので、開発環境Aの方が総合的に優れていると取りあえず判断しました。

ターミナルでのMySQL管理に期待したのですが、なんとも残念な結果です。

ただ全テーブル内検索の場合は対象テーブルが400以上あってハードにかなり負荷をかけるため、単純に処理時間が比例するとも限りません。

もう少し検討が必要かもしれません。

import time,datetime,subprocess,os
import MySQLdb

# MySQLの起動確認
proc = subprocess.run("mysqladmin ping", shell=True, stdout= subprocess.PIPE, stderr = subprocess.PIPE)
ping_result = proc.stdout.decode('UTF-8')
print(ping_result)

# 起動していなければ起動
detect = "alive" in ping_result
if detect == False:
    os.system('mysql.server start')
else:
    print("MySQLは起動しています")

# MySQLに接続
conn = MySQLdb.connect(user='root')
cur = conn.cursor()

# 処理時間測定開始
start = time.time()

# データベースtestを選択
select_db = f"use test"
cur.execute(select_db)

# 検索
search = f"SELECT * FROM `TableA` WHERE `Address` LIKE '%東京都%'"
cur.execute(search)
rows = cur.fetchall()
for row in rows:
    print(row)

# 処理時間算出(秒)
process_time = time.time() - start
td = datetime.timedelta(seconds = process_time).total_seconds()

# 小数点第2位まで表示
td_2f = f'{td:.2f}'
print(td_2f)

conn.close()
os.system('mysql.server stop')