PythonスクリプトからMySQLのDBのデータの合計値を求めよう
今回は前回作成したテーブルを使って、そのデータの合計値を取得してみましょう。
今回使うテーブルに関しては、前回の記事を参照してください。
合計値を求める関数
SQLで合計値を求めるには、SUM()関数を使います。
SUM(DISTINCT 列)
DISTINCTオプションを使用すると、重複を除いた値で合計を出します。
合計値を求めるPythonスクリプト
合計値を求めるPythonスクリプトは、以下のようになります。
前回のプログラムを元に、13行目のSQL文を変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
### インポート import unicodedata import mysql.connector ### DB接続 cnx = mysql.connector.connect(host='192.168.11.10', user='user1', password='password1', database='db1') ### カーソル作成 cursor = cnx.cursor() ### SELECT文作成 sql1 = "SELECT * FROM tb2" sql2 = "SELECT SUM(lang), SUM(math), SUM(engl) FROM tb2" ### データ取得実行 cursor.execute(sql1) ### ヘッダ出力 print("{} {} {} {}".format("氏名 ", "国語", "数学", "英語")) print("{} {} {} {}".format("--------------", "----", "----", "----")) ### データ出力 for col1, col2, col3, col4 in cursor: ### カウンター初期化 count = 0 ### キャラクター数取得 for chara in col1: if unicodedata.east_asian_width(chara) in "FWA": count += 1 ### データ出力 print("{:{width}s} {:4d} {:4d} {:4d}".format(col1, col2, col3, col4, width=14-count)) ### 改行 print() ### データ合計値取得実行 cursor.execute(sql2) ### ヘッダ出力 print("{} {} {}".format("国語", "数学", "英語")) print("{} {} {}".format("----", "----", "----")) ### データ出力 col1, col2, col3 = cursor.fetchone() print("{:4} {:4} {:4}".format(col1, col2, col3)) ### カーソルクローズ cursor.close() ### DB切断 cnx.close() |
プログラムを実行すると、以下のように結果が出力されます。