6001.ボート交換時の成績検索 - takobouzu/BOAT_RACE_DB GitHub Wiki

Home > 6000.分析用スクリプト

ボート交換時の成績検索

2021.02.11 大村G1 九州地区選手権4500 山田康二選手のボートが変更になった時に、ボート変更時の競走成績が気になって作成したスクリプトである。

t_race_d.yyyymmdd BETWEEN '20210201' AND '20210212'で検索範囲を設定する。

ORDER BY 〜で節間における選手の出走情報・競走成績を初日から最終日まで昇順にソートしている。

節間における前走とのデータ比較する際に応用が利くスクリプトである。

スクリプトコード

"""
【ファイル】change_boat.py
【機能仕様】節間でボートを交換した選手の成績を出力する
【動作環境】pythonista3
【開発来歴】2021.01.23 Ver 1.00
"""

import sqlite3
BOAT_RACE_DB = 'boatrace.db'

#競走成績抽出SQL
wk_sql1 = '''
SELECT t_race_t.pool_code, t_race_t.pool_name,t_race_t.title,t_race_d.player_no,t_result_d.ranking,t_result_d.yyyymmdd,t_result_d.race_no,t_race_d.boat_no
FROM
t_race_t,t_race_d,t_result_d
WHERE
t_race_t.yyyymmdd = t_race_d.yyyymmdd AND t_race_t.pool_code = t_race_d.pool_code AND
t_result_d.yyyymmdd = t_race_d.yyyymmdd AND t_result_d.pool_code = t_race_d.pool_code AND t_result_d.race_no = t_race_d.race_no AND t_result_d.entry_no = t_race_d.entry_no AND
t_race_d.yyyymmdd BETWEEN '20210201' AND '20210212'
ORDER BY substr(t_race_t.yyyymmdd,1,4) ASC,t_race_t.pool_code ASC, t_race_t.title ASC, t_race_d.player_no ASC, t_race_d.yyyymmdd ASC,t_race_d.race_no ASC
'''

#ブレークキー    
key_pool_code       = ''  #場コード
key_pool_name       = ''  #場名
key_title           = ''  #節間タイトル
key_player_no       = ''  #登番
key_boat_no         = ''  #ボート番号

#出走表タイトルテーブルのレコードを出力
conn = sqlite3.connect(BOAT_RACE_DB)
cur = conn.cursor()
for row1 in cur.execute(wk_sql1):
    #レコードの内容を作業変数に転記
    wk_pool_code    = str(row1[0])  #場コード
    wk_pool_name    = str(row1[1])  #場名
    wk_title        = str(row1[2])  #節間タイトル
    wk_player_no    = str(row1[3])  #登番
    wk_ranking      = str(row1[4])  #着順
    wk_yyyymmdd     = str(row1[5])  #開催年月日
    wk_race_no      = str(row1[6])  #レース番号
    wk_boat_no      = str(row1[7])  #ボート番号
    #キーブレーク処理
    if (key_pool_code  == wk_pool_code) and (key_pool_name  ==  wk_pool_name) and (key_title   ==   wk_title) and (key_player_no ==  wk_player_no):
        #節間でボートが変更されたらレコードを出力する
        if(key_boat_no != wk_boat_no):
            print(wk_pool_code,wk_pool_name,wk_title,wk_player_no,wk_ranking,wk_yyyymmdd,wk_race_no, key_boat_no + ' --> ' + wk_boat_no)
            key_boat_no = wk_boat_no
    else:    
        key_pool_code    = wk_pool_code
        key_pool_name    = wk_pool_name
        key_title        = wk_title 
        key_player_no    = wk_player_no
        key_boat_no      = wk_boat_no
cur.close()
conn.close()

実行結果

24 大村 九州地区選手権 4500 2 20210211 10 53 --> 57
24 大村 九州地区選手権 4504 4 20210209 09 61 --> 56
24 大村 九州地区選手権 4521 5 20210209 07 28 --> 38

Home > 6000.分析用スクリプト