PythonスクリプトからMySQLのDBのレコード毎の合計を求めよう
今回はDBのデータをレコード毎に合計してみましょう。
今回使うテーブルに関しては、第7回の記事を参照してください。
レコード毎の合計を求めるPythonスクリプト
レコード毎の合計を求めるPythonスクリプトは、以下のようになります。
SELECT文の中で、合計したいカラムの値を足し算します。
なお、カラム名はAS句を使って「total」という名前にしています。
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 |
### インポート 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文作成 sql = "SELECT name, lang, math, engl, (lang + math + engl) AS total FROM tb2" ### データ取得実行 cursor.execute(sql) ### ヘッダ出力 print("{} {} {} {} {}".format("氏名 ", "国語", "数学", "英語", "合計")) print("{} {} {} {} {}".format("--------------", "----", "----", "----", "----")) ### データ出力 for col1, col2, col3, col4, col5 in cursor: ### カウンター初期化 count = 0 ### キャラクター数取得 for chara in col1: if unicodedata.east_asian_width(chara) in "FWA": count += 1 ### データ出力 print("{:{width}s} {:4d} {:4d} {:4d} {:4d}".format(col1, col2, col3, col4, col5, width=14-count)) ### カーソルクローズ cursor.close() ### DB切断 cnx.close() |
プログラムを実行すると、以下のように結果が出力されます。