
ã10äžè¡ãç¬æ®ºãäžé£åãªããºã§ããªãŒãºããSQLiteãèŠéãããããã«ã¯ã€ã³ãµãŒããã®éççªç Ž!Alma Core Proéçºèš #6
ã©ãããã¢ã«ãã³ã¢ã§ãïŒ
æ¬æ¥ã¯å·¥å Žã®èªååæ©æ¢°ãã·ãŒã±ã³ãµãŒïŒPLCã»å¶åŸ¡ç€ïŒã®èšèšã«åãåã£ãŠãããçŸåœ¹ã®æ©æ¢°ãšã³ãžãã¢ã§ãã
ååã®ç¬¬5åã§ã¯ãæåã®äºéå§çž®ãããªã§ãŒã·ã«ïŒ.zipã®äžã«.lzhïŒã7-Zipãšã³ãžã³ã§å šèªåè§£äœãã29ããŒãã«ãžä»åãããèªå鿢±ã»ä»åãã³ã³ãã¢ãã®æ§ç¯åãã話ãããŸããã
ããã£ããïŒ ããã§ã©ããªããŒã¿ãèœã¡ãŠããŠãããã¿ã³äžçºã§ã³ã³ãã¢ã«ä¹ã£ãããïŒã
âŠâŠãšããŸãããŠãæ·±å€2æã«çŒ¶ã³ãŒããŒãéããŠåã³ã«æµžã£ãŠããç§ã
ããããéå»10幎åã®ããã°ããŒã¿ãäžæ¬æå ¥ããç¬éãã¢ãã¿ãŒã®åã§å®å šã«åãã€ããŸããã
ãâŠâŠãããããã°ã¬ã¹ããŒã1ããªãåããŠãžãããªããïŒïŒã
ä»åã¯ãããŒã¿äŸçµŠã³ã³ãã¢ãæ²é³ŽãäžããŠå€§æžæ»ãèµ·ããããSQLiteã®æžã蟌ã¿ããã«ããã¯ãããæ©æ¢°å±ã®çŸå Žä»èŸŒã¿ã®ãã¥ãŒãã³ã°ã§ããäŒããæ°çŸäžè¡ã®ããŒã¿ãç¬æ®ºãããéççªç Žã®èå°è£ããå±ãããŸãïŒ
1. æ¬éã³ã³ãã¢ã¯çéãªã®ã«ããã¬ã¹æ©ïŒSQLiteïŒã§å€§æžæ»ïŒïŒ
å·¥å Žã®è£œé ã©ã€ã³ã§ãããããã©ãã«ã«ããæ¬éã³ã³ãã¢ã®äŸçµŠã¹ããŒãã«å¯ŸããŠãå å·¥æ©ïŒãã¬ã¹æ©ã溶æ¥ããããïŒã®åŠçã¿ã¯ãã¿ã€ã ãé ãããŠãæåã§è£œåãå±±ç©ã¿ã«ãªã£ãŠã©ã€ã³ãå®å šåæ¢ããããšããçŸè±¡ããããŸãã
ãŸãã«ãååã®ç¬¬5åãäœã£ãããšã®ç§ã®PCã®äžã§ããããèµ·ããŠããŸããã
äºéå§çž®ã®ç®ããã¯ããã¯ã°ã©ãŠã³ãã§äžç¬ã§çµããã
29ããŒãã«ãžã®ãã¡ã€ã«ä»åãããPythonã®èŸæžã䜿ã£ãŠç¬æã«æ¯ãåããããã
ãæ¬éã©ã€ã³ãã¯å ¬å·®Â±0ã®å®ç§ãªã¹ããŒãã§ããã
ãªã®ã«âŠâŠããSQLiteã®ããŒã¿ããŒã¹ãžæžã蟌ãããšãããšãPCã®ããŒããã£ã¹ã¯ã¢ã¯ã»ã¹ã©ã³ããçã£éã«ç¹ç¯ãããŸãŸãã¿ã¹ã¯ãããŒãžã£ãŒã®å¿çãæªãããªã£ãŠããã
èšç®ããŠã¿ããšã1éå¬ïŒåæ¥2æ¥éïŒã®ããŒã¿ãå ¥ããã ãã§æ°ååã
éå»10幎åãé¡ãããšããããå®äºäºå®æéã¯ãªããšã3æ¥åŸãã
ã誰ããããªã«åŸ ãŠãããŒãŒãŒããïŒïŒã
ãææã®æã«é±æ«ã®ããŒã¿ãåã蟌ã¿å§ããŠãçµããã®ãæšææ¥ã£ãŠäœãããïŒ é±æ«ã®äºæ³ã«éã«åããžããïŒã
2. äžé£å4,896éãã®æŽåãšã1è¡ãã€ã³ããããã®æè¡
ãªããããã»ã©ãŸã§ã«æéããããã®ãïŒ
åå ãçªãæ¢ãããããããŒã¿éãæ¹ããŠèšç®ããŠéãããŸããã
競銬ããŒã¿ã®äžã§ãæ¡éãã®ã¬ã³ãŒãæ°ãèªãæå€§ã®ã¢ã³ã¹ã¿ãŒã
ãããããªããºããŒã¿ïŒç¹ã«äžé£åïŒãã§ãã
ãã«ã²ãŒã18é ç«ãŠã®å Žåãäžé£åã®è²·ãç®ã®ç·æ°ã¯ã
18 Ã 17 Ã 16 = 4,896
ãã£ã1ã¬ãŒã¹ã ãã§çŽ5,000è¡ã
1æ¥3å Žã»å š36ã¬ãŒã¹ãè¡ãããã°ã1æ¥ã ãã§çŽ18äžè¡ã
忥ã®1éå¬ã ãã§ããªããºæçŽ°ããŒãã«ïŒkol_kod3_detailïŒã«ã¯36äžä»¶ä»¥äžã®ã¬ã³ãŒããéªåŽ©ã®ããã«æŒãå¯ããŠããŸãã
åæã®ç§ãæžããŠãããæ¥ããããããã¢ã³ããã¿ãŒã³ã³ãŒãããã¡ãã§ãã
Python
# ãææªã®ã³ãŒãã1ä»¶ãã€ãã£ã¹ã¯ã«ãã³ã³ãæŒãã«è¡ãæè¡
for comb, odds in trifecta_list:
cursor.execute(
"INSERT OR REPLACE INTO kol_kod3_detail VALUES (?, ...)",
(year, venue, times, day, r_no, comb, odds)
)
conn.commit() # â ããã諞æªã®æ ¹æºïŒïŒ
ããŒã¿ããŒã¹ã«ããã conn.commit() ãšã¯ãå·¥å Žã®äœæ¥ã§èšãã°ããã«ãã1æ¬ç· ãããã³ã«äœæ¥å°ããé¢ããŠäºåæãžè¡ããå®äºäŒç¥šã«å·¥å Žé·ã®æ¿èªå°ããããã«è¡ãããããªãã®ã§ãã
1ç§éã«äœåååãã¯ããã¯ãå»ãCPUã®è¶ é«éäžçã§ã1è¡ããšã«ç©çãã£ã¹ã¯ïŒSSDãHDDïŒãžã¢ã¯ã»ã¹ããŠãæžã蟌ã¿å®äºãã確èªããŠããããé ããŠåœããåã§ãã
4,896åãäºåæãšåŸåŸ©ããŠãããæ¥ãæ®ããŸãïŒç¬ïŒã
3. SQLiteãèŠéãããäžçš®ã®ç¥åš
ãã®å€§æžæ»ãè§£æ¶ãããããç§ã¯SQLiteã®å éšæ§é ã«ã¡ã¹ãå ¥ããæ©æ¢°å¶åŸ¡ã®å²ã蟌ã¿åŠçãšåãçºæ³ã§3ã€ã®é«éåãã¥ãŒãã³ã°ãæå ¥ããŸããã
Python
# å®éã® db_importer.py ããæç²
def initialize_all_tables(db_path: str):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
try:
# â WALã¢ãŒãã®éæŸïŒäžŠåã¢ã¯ã»ã¹ãšè¿œèšæžã蟌ã¿ã®æé©åïŒ
cursor.execute("PRAGMA journal_mode = WAL;")
# â¡ OSãžã®éå°ãªåæåŸ
ã¡ãã¹ããã
cursor.execute("PRAGMA synchronous = NORMAL;")
# ⢠ãã©ã³ã¶ã¯ã·ã§ã³ãæåå¶åŸ¡ïŒå·šå€§ãª1ã€ã®ç®±ãšããŠæ±ãïŒ
conn.execute("BEGIN TRANSACTION;")
# ïŒããŒãã«äœæã»ã€ã³ããã¯ã¹äœæåŠç...ïŒ
conn.commit()
â WALã¢ãŒãïŒWrite-Ahead LoggingïŒ
SQLiteã®ããã©ã«ãã¯ãããŒã«ããã¯ãžã£ãŒãã«ããšããå€ãä»çµã¿ã§ã誰ããæžã蟌ãã§ããéã¯ããŒã¿ããŒã¹å šäœã«é äžãªéµãããããŸãã
ããã journal_mode = WAL ã«åãæ¿ãããšã倿Žå·®åãå°çšãã°ãã¡ã€ã«ïŒ-walïŒã«äžçŽç·ïŒã·ãŒã±ã³ã·ã£ã«ïŒã«è¿œèšããŠããã¢ãŒãã«å€ãããŸããç£æ°ãããããã©ãã·ã¥ã¡ã¢ãªãç¡é§ã«é£ã³åãã®ãé²ããæžãèŸŒã¿æ§èœãåçã«è·³ãäžãããŸãã
â¡ PRAGMA synchronous = NORMAL
ããã©ã«ãã® FULL ã ãšãOSã«å¯ŸããŠãæ¬åœã«ãã£ã¹ã¯ã®ç£æ°é¢ã«ç©ççã«é»æ°ãæžã蟌ãŸãããïŒããæ¯å峿 Œã«åãåãããŸããå®¶åºçšã®ãã¹ã¯ãããã¢ããªã§ããã°ãããã NORMAL ã«ç·©ããŠãããŒã¿ããŒã¹ãç Žæããå¿é ã¯å®çšäžãŒãã§ããç¡é§ãªåæåŸ ã¡æéã培åºçã«åãèœãšããŸããã
⢠ãã©ã³ã¶ã¯ã·ã§ã³ã®å®å šæåå¶åŸ¡
BEGIN TRANSACTION; ã宣èšããPythonåŽã®èªåã³ãããã忢ãããã¹ãŠã®éšåãæå®ã®äœçœ®ã«äžŠã¶ãŸã§ãäºåæãžå€åã¯ãããã«è¡ããªããç¶æ ãäœããŸããã
4. ã¡ã¢ãªã溢ããããªãããããæåºæ©æ§ã
ãã»ãªã36äžä»¶ã®ãªããºãå šéšã¡ã¢ãªã«æºã蟌ãã§ãæåŸã«1åã ãã³ãããããã°æéãªãã¡ããïŒ ç¥ãããã©ïŒã
ããæããããããŸããããããããããšä»åºŠã¯ããœã³ã³ã®ã¡ã¢ãªïŒRAMïŒããã³ã¯ããŠã¢ããªã匷å¶çµäºïŒã¯ã©ãã·ã¥ïŒããŸãã
å·¥å Žã®éšåããŒã«ã ã£ãŠãç¡éã«éšåãç©ã¿äžãããåºãæããŠããŸããŸãã
ããã§çµãã ã®ããã5,000ä»¶ããšã«ãããšæŒãåºããããã€ã³ãµãŒãæ©æ§ãã§ãã
Python
# å®éã® db_importer.py ããæç²
batch_size = 5000
records_base = []
records_detail = []
with open(kd3_file_path, "rb") as f:
for line in f:
# ïŒãã€ããªã®ããŒã¹åŠç...ïŒ
row_tuple = tuple(parsed_dict[col] for col in columns_base)
records_base.append(row_tuple)
# 5,000ä»¶ã®ãããã¡ãæºæ¯ã«ãªã£ãç¬éãäžæã§SQLiteãžæµã蟌ãïŒ
if len(records_base) >= batch_size:
cursor.executemany(insert_sql_base, records_base)
records_base.clear() # ã¡ã¢ãªãå³åº§ã«è§£æŸïŒ
if is_odds_table and records_detail:
cursor.executemany(insert_sql_detail, records_detail)
records_detail.clear()
# æåŸã«æ®ã£ã端æ°ãæµã蟌ãã§ããŸãšããŠã³ãããïŒ
if records_base:
cursor.executemany(insert_sql_base, records_base)
conn.commit()
Pythonã® cursor.executemany() ã䜿ããCèšèªã¬ãã«ã§æé©åããããã«ã¯ã€ã³ãµãŒãåœä»€ãå©ã蟌ã¿ãŸãã
5,000ä»¶ããŸã£ããããã¹ã³ïŒãšäžæ¬ãã¬ã¹ãçµãã£ããã¡ã¢ãªãå³åº§ã« clear() ããŠæ¬¡ã®5,000ä»¶ãè¿ããã
ãã®ã¿ã¯ãã¿ã€ã 管çã«ãããã¡ã¢ãªæ¶è²»éãæ°åMBçšåºŠã«æããªãããæé«éã®ãã¬ã¹ã¹ããŒããç¶æããããšã«æåããŸããã
5. ãAlma Core Proããªããæ°å¹Žåã®èšå€§ãªããŒã¿ãæ°åã§åžã蟌ãŸãã
ãã®éççªç Žãã¥ãŒãã³ã°ãæœããçµæãäœãèµ·ãããã
ãããŸã§1ã¬ãŒã¹ã®ãªããºã«10ç§ä»¥äžãããã1éå¬ã®ã€ã³ããŒãã§ããªãŒãºããŠããåŠçãââ
1é嬿¥ïŒ36ã¬ãŒã¹åã»ãªããºæ°åäžä»¶ïŒãããããæ°ç§ãåæ°ç§ã§é£²ã¿èŸŒãã¢ã³ã¹ã¿ãŒãšã³ãžã³ã«åããŸããïŒ
1幎åã®å šã¬ãŒã¹ã»å šæçžŸã»å šãªããºããŸãšããŠæµã蟌ãã§ããã«ããã©ãŒã¡ã³ã«ã湯ãå ¥ããŠåŸ ã£ãŠããéã«å®äºããŸãã
ã倧éã®ããŒã¿ãæ±ããšãPCãéããŠåºãŸãã
ããªããºããŒã¿ãªããŠéãããŠå人ã®PCã§ã¯ä¿åã§ããªãã
ãããªåžžèã¯ãé©åãªã¢ãŒããã¯ãã£èšèšãšãã©ã³ã¶ã¯ã·ã§ã³å¶åŸ¡ãããã°éå»ã®ãã®ã§ãã
ãAlma Core Proãã®å¿èéšïŒSQLiteïŒã¯ãäœçŸäžè¡ãšããéå»ã®ç«¶éŠ¬ã®æŽå²ããéãã«ããããŠè¶ é«éã«ãã®èº«ã«å®¿ãããšãã§ããããã«ãªããŸããïŒ
âŠâŠãããã
ããŒã¿ãå®ç§ã«æããææ°æã ãšç«¶éЬåæç»é¢ãäœãããšããç§ã«ã競銬ããŒã¿ã®ãæå€§ã®éãïŒç¬ïŒãçãå¥ãããšã«ãªããŸãã
6. 次åäºåïŒå ¬åŒããŒã¿ã«ç¡ããªãéç®ã§äœãïŒãå銬ããã³ã©ãããç©ç埩å ã®å·å¿µ
ãããïŒ ãªããºãçé ãã¿ã€ã ãããã¹ãŠã³ã³ãæ°ç§ã§æ€çŽ¢ã§ããããã«ãªã£ããïŒã
ãã£ãããç«¶èµ°æçžŸããŒãã«ïŒkol_sei1, kol_sei2ïŒãçºããªãããå銬ã®èµ°ç Žã©ãããåæããããšãããã®æã
ç§ã¯ç»é¢ã®åã§é ãæ±ããŸããã
ãâŠâŠåŸ ãŠããå ¬åŒããŒã¿ã«ãå銬ã®éäžã©ããããèŒã£ãŠãªãããªããïŒïŒã
競銬ããã¯ã«ããJRAå ¬åŒã«ãèŒã£ãŠããã®ã¯ãå é 銬ã®ã¬ãŒã¹ã©ããããšãå銬ã®äžãã3FãããããŠãå銬ã®å3FãïŒå3Fã¯ç«¶éЬããã¯ç¬èªã®è²ŽéããŒã¿ïŒïŒã
äžå£ãåŸæ¹ã«ãã銬ããéäž1ããã³ïŒ200mïŒãããäœç§ã§èµ°ã£ãŠããã®ãã¯ãå°çäžã®ã©ãã«ãèšé²ãããŠããªãã£ãã®ã§ãïŒ
ãéäžã©ãããåããããã£ãããåãæ¿æµã§ãããå è¡éЬãšãåŸæ¹ã§æ»ãã ãµãããŠèãæºããå·®ã銬ã®åŒ·ãã®æ¯èŒãªããŠã§ããžãããïŒïŒã
次åã
ãAlma Core Proéçºèš NO.7ãå ¬åŒããŒã¿ã«ç¡ããªãéç®ã§äœãïŒééé äœãšçå·®ãããå銬ã®åå¥ããã³ã©ããããç©ç埩å ããå·å¿µã®ã¢ã«ãŽãªãºã ã
ããŒã¿ãç¡ããªããå·¥åŠç¥èã§éç®ããŠäœãåºãïŒ
ã³ãŒããŒééé äœãšçå·®ããããŠç©çéåæ¹çšåŒãçµã¿åãããŠã49äžé åã®åå¥ã©ããã埩å ããããæ©æ¢°ãšã³ãžãã¢ã®æå°ããèªããŸãïŒ
ã©ãããæ¥œãã¿ã«ïŒ
â æåŸãŸã§èªãã§ããã ãããã³ãã«ããããšãããããŸããïŒ
ãWALã¢ãŒããšãã«ã¯ã€ã³ãµãŒãã®åšåãããåãã£ãïŒãããªããºã®ããŒã¿éã£ãŠãããªã«ã€ããã®ãïŒããšæããŠããã ãããããã²ç»é¢äžã®ãã¹ãïŒããŒãããŒã¯ïŒããããã©ããŒããããããšæŒããŠããã ãããšãéçºãšå·çãç¶ããæé«ã®ã¬ãœãªã³ã«ãªããŸãïŒ
âïž åã®èšäºã¯ãã¡ã
ð ã第5åïŒæåã®éºç£LZHãå šèªåã§å¥ãïŒPythonÃ7-Zipã§çµãã 29ããŒãã«èªåä»åãã©ã€ã³ã
ð ãå šè©±ã€ããèªã¿ãèªäœç«¶éЬãœããéçºèšãã¬ãžã³
ð [Alma Core Pro / MDI Pro éçºãã¬ãžã³ãéã]
ð¡ ããªãExcelã§ããµãŒããŒåDBã§ããªãSQLiteãªã®ãïŒãåç¹ã®ç¬¬1åã¯ãã¡ã
ð [éçºèš 第1åãèªã]
⩠次ã®ã話ã¯ãã¡ã
ð ã第7åïŒ49äžé åã®èµ°ç Žãã°ã埩å ïŒééé äœãšçå·®ããåå¥ã©ãããéç®ããçæ°ã®ç©çåŒã
ð€ å·¥å Žã®PLCå±ãæ¬æ°ã§æžãïŒçå¿«ïŒéåãªèªäœWebå°èª¬ãé£èŒäž
ð [ã転çãããã€ãŒãã³ã»ãã¹ã¯ã倧統é ã ã£ãä»¶ïŒç¬ïŒã第1話ãž]
ð [æ¬æ Œã¯ã©ã€ã SFãµã¹ãã³ã¹ãã¢ããã¯ã·ã§ã³ã»ãããã³ã«ã第1話ãž]