Bug fixes for unique indeces
This commit is contained in:
parent
561c7e99d4
commit
07c1b51d0f
@ -183,7 +183,7 @@ class Player(BaseModel):
|
||||
fangr_id = CharField(null=True)
|
||||
description = CharField()
|
||||
quantity = IntegerField(default=999)
|
||||
mlb_player = ForeignKeyField(MlbPlayer, null=True)
|
||||
mlbplayer = ForeignKeyField(MlbPlayer, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.cardset} {self.p_name} ({self.rarity.name})'
|
||||
@ -625,7 +625,7 @@ class PitchingCard(BaseModel):
|
||||
|
||||
|
||||
pc_index = ModelIndex(PitchingCard, (PitchingCard.player, PitchingCard.variant), unique=True)
|
||||
PitchingCard.add_index(bc_index)
|
||||
PitchingCard.add_index(pc_index)
|
||||
|
||||
|
||||
class PitchingCardRatings(BaseModel):
|
||||
@ -644,8 +644,9 @@ class PitchingCardRatings(BaseModel):
|
||||
hbp = FloatField()
|
||||
walk = FloatField()
|
||||
strikeout = FloatField()
|
||||
fo_slap = FloatField()
|
||||
fo_center = FloatField()
|
||||
flyout_lf_b = FloatField()
|
||||
flyout_cf_b = FloatField()
|
||||
flyout_rf_b = FloatField()
|
||||
groundout_a = FloatField()
|
||||
groundout_b = FloatField()
|
||||
xcheck_p = FloatField()
|
||||
@ -683,7 +684,7 @@ class CardPosition(BaseModel):
|
||||
pos_index = ModelIndex(
|
||||
CardPosition, (CardPosition.player, CardPosition.variant, CardPosition.position), unique=True
|
||||
)
|
||||
PitchingCardRatings.add_index(pos_index)
|
||||
CardPosition.add_index(pos_index)
|
||||
|
||||
|
||||
db.create_tables([BattingCard, BattingCardRatings, PitchingCard, PitchingCardRatings, CardPosition])
|
||||
|
||||
452
db_engine.py
452
db_engine.py
@ -1,9 +1,13 @@
|
||||
import math
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
import logging
|
||||
import os
|
||||
|
||||
from pandas import DataFrame
|
||||
from peewee import *
|
||||
from peewee import ModelSelect
|
||||
from playhouse.shortcuts import model_to_dict
|
||||
|
||||
db = SqliteDatabase(
|
||||
'storage/pd_master.db',
|
||||
@ -23,6 +27,62 @@ logging.basicConfig(
|
||||
)
|
||||
|
||||
|
||||
def model_csv_headers(this_obj, exclude=None) -> List:
|
||||
data = model_to_dict(this_obj, recurse=False, exclude=exclude)
|
||||
return [x for x in data.keys()]
|
||||
|
||||
|
||||
def model_to_csv(this_obj, exclude=None) -> List:
|
||||
data = model_to_dict(this_obj, recurse=False, exclude=exclude)
|
||||
return [x for x in data.values()]
|
||||
|
||||
|
||||
def query_to_csv(all_items: ModelSelect, exclude=None):
|
||||
if all_items.count() == 0:
|
||||
data_list = [['No data found']]
|
||||
else:
|
||||
data_list = [model_csv_headers(all_items[0], exclude=exclude)]
|
||||
for x in all_items:
|
||||
data_list.append(model_to_csv(x, exclude=exclude))
|
||||
|
||||
return DataFrame(data_list).to_csv(header=False, index=False)
|
||||
|
||||
|
||||
def complex_data_to_csv(complex_data: List):
|
||||
if len(complex_data) == 0:
|
||||
data_list = [['No data found']]
|
||||
else:
|
||||
data_list = [[x for x in complex_data[0].keys()]]
|
||||
for line in complex_data:
|
||||
logging.info(f'line: {line}')
|
||||
this_row = []
|
||||
for key in line:
|
||||
logging.info(f'key: {key}')
|
||||
if line[key] is None:
|
||||
this_row.append('')
|
||||
|
||||
elif isinstance(line[key], dict):
|
||||
if 'name' in line[key]:
|
||||
this_row.append(line[key]['name'])
|
||||
elif 'abbrev' in line[key]:
|
||||
this_row.append(line[key]['abbrev'])
|
||||
else:
|
||||
this_row.append(line[key]['id'])
|
||||
|
||||
elif isinstance(line[key], int) and line[key] > 100000000:
|
||||
this_row.append(f"'{line[key]}")
|
||||
|
||||
elif isinstance(line[key], str) and ',' in line[key]:
|
||||
this_row.append(line[key].replace(",", "-_-"))
|
||||
|
||||
else:
|
||||
this_row.append(line[key])
|
||||
|
||||
data_list.append(this_row)
|
||||
|
||||
return DataFrame(data_list).to_csv(header=False, index=False)
|
||||
|
||||
|
||||
class BaseModel(Model):
|
||||
class Meta:
|
||||
database = db
|
||||
@ -498,6 +558,7 @@ db.create_tables([
|
||||
|
||||
class BattingCard(BaseModel):
|
||||
player = ForeignKeyField(Player)
|
||||
variant = IntegerField()
|
||||
steal_low = IntegerField()
|
||||
steal_high = IntegerField()
|
||||
steal_auto = BooleanField()
|
||||
@ -509,9 +570,13 @@ class BattingCard(BaseModel):
|
||||
hand = CharField(default='R')
|
||||
|
||||
|
||||
bc_index = ModelIndex(BattingCard, (BattingCard.player, BattingCard.variant), unique=True)
|
||||
BattingCard.add_index(bc_index)
|
||||
|
||||
|
||||
class BattingCardRatings(BaseModel):
|
||||
battingcard = ForeignKeyField(BattingCard)
|
||||
vs_hand = FloatField()
|
||||
vs_hand = CharField(default='R')
|
||||
homerun = FloatField()
|
||||
bp_homerun = FloatField()
|
||||
triple = FloatField()
|
||||
@ -539,20 +604,33 @@ class BattingCardRatings(BaseModel):
|
||||
slg = FloatField(null=True)
|
||||
|
||||
|
||||
bcr_index = ModelIndex(
|
||||
BattingCardRatings, (BattingCardRatings.battingcard, BattingCardRatings.vs_hand), unique=True
|
||||
)
|
||||
BattingCardRatings.add_index(bcr_index)
|
||||
|
||||
|
||||
class PitchingCard(BaseModel):
|
||||
player = ForeignKeyField(Player)
|
||||
variant = IntegerField()
|
||||
balk = IntegerField()
|
||||
wild_pitch = IntegerField(null=True)
|
||||
hold = CharField()
|
||||
wild_pitch = IntegerField()
|
||||
hold = IntegerField()
|
||||
starter_rating = IntegerField()
|
||||
relief_rating = IntegerField()
|
||||
closer_rating = IntegerField(null=True)
|
||||
batting = CharField(null=True)
|
||||
offense_col = IntegerField()
|
||||
hand = CharField(default='R')
|
||||
|
||||
|
||||
pc_index = ModelIndex(PitchingCard, (PitchingCard.player, PitchingCard.variant), unique=True)
|
||||
PitchingCard.add_index(pc_index)
|
||||
|
||||
|
||||
class PitchingCardRatings(BaseModel):
|
||||
pitchingcard = ForeignKeyField(PitchingCard)
|
||||
vs_hand = CharField()
|
||||
vs_hand = CharField(default='R')
|
||||
homerun = FloatField()
|
||||
bp_homerun = FloatField()
|
||||
triple = FloatField()
|
||||
@ -566,8 +644,9 @@ class PitchingCardRatings(BaseModel):
|
||||
hbp = FloatField()
|
||||
walk = FloatField()
|
||||
strikeout = FloatField()
|
||||
fo_slap = FloatField()
|
||||
fo_center = FloatField()
|
||||
flyout_lf_b = FloatField()
|
||||
flyout_cf_b = FloatField()
|
||||
flyout_rf_b = FloatField()
|
||||
groundout_a = FloatField()
|
||||
groundout_b = FloatField()
|
||||
xcheck_p = FloatField()
|
||||
@ -584,10 +663,15 @@ class PitchingCardRatings(BaseModel):
|
||||
slg = FloatField(null=True)
|
||||
|
||||
|
||||
pcr_index = ModelIndex(
|
||||
PitchingCardRatings, (PitchingCardRatings.pitchingcard, PitchingCardRatings.vs_hand), unique=True
|
||||
)
|
||||
PitchingCardRatings.add_index(pcr_index)
|
||||
|
||||
|
||||
class CardPosition(BaseModel):
|
||||
player = ForeignKeyField(Player)
|
||||
batting = ForeignKeyField(BattingCard, null=True)
|
||||
pitching = ForeignKeyField(PitchingCard, null=True)
|
||||
variant = IntegerField()
|
||||
position = CharField()
|
||||
innings = IntegerField()
|
||||
range = IntegerField()
|
||||
@ -597,182 +681,188 @@ class CardPosition(BaseModel):
|
||||
overthrow = IntegerField(null=True)
|
||||
|
||||
|
||||
pos_index = ModelIndex(
|
||||
CardPosition, (CardPosition.player, CardPosition.variant, CardPosition.position), unique=True
|
||||
)
|
||||
CardPosition.add_index(pos_index)
|
||||
|
||||
|
||||
db.create_tables([BattingCard, BattingCardRatings, PitchingCard, PitchingCardRatings, CardPosition])
|
||||
|
||||
|
||||
db.close()
|
||||
|
||||
scout_db = SqliteDatabase(
|
||||
'storage/card_creation.db',
|
||||
pragmas={
|
||||
'journal_mode': 'wal',
|
||||
'cache_size': -1 * 64000,
|
||||
'synchronous': 0
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class BaseModelScout(Model):
|
||||
class Meta:
|
||||
database = scout_db
|
||||
|
||||
|
||||
class ScoutCardset(BaseModelScout):
|
||||
set_title = CharField()
|
||||
set_subtitle = CharField(null=True)
|
||||
|
||||
|
||||
class ScoutPlayer(BaseModelScout):
|
||||
sba_id = IntegerField(primary_key=True)
|
||||
name = CharField()
|
||||
fg_id = IntegerField()
|
||||
br_id = CharField()
|
||||
offense_col = IntegerField()
|
||||
hand = CharField(default='R')
|
||||
|
||||
|
||||
scout_db.create_tables([ScoutCardset, ScoutPlayer])
|
||||
|
||||
|
||||
class BatterRatings(BaseModelScout):
|
||||
id = CharField(unique=True, primary_key=True)
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
cardset = ForeignKeyField(ScoutCardset)
|
||||
vs_hand = FloatField()
|
||||
is_prep = BooleanField()
|
||||
homerun = FloatField()
|
||||
bp_homerun = FloatField()
|
||||
triple = FloatField()
|
||||
double_three = FloatField()
|
||||
double_two = FloatField()
|
||||
double_pull = FloatField()
|
||||
single_two = FloatField()
|
||||
single_one = FloatField()
|
||||
single_center = FloatField()
|
||||
bp_single = FloatField()
|
||||
hbp = FloatField()
|
||||
walk = FloatField()
|
||||
strikeout = FloatField()
|
||||
lineout = FloatField()
|
||||
popout = FloatField()
|
||||
flyout_a = FloatField()
|
||||
flyout_bq = FloatField()
|
||||
flyout_lf_b = FloatField()
|
||||
flyout_rf_b = FloatField()
|
||||
groundout_a = FloatField()
|
||||
groundout_b = FloatField()
|
||||
groundout_c = FloatField()
|
||||
avg = FloatField(null=True)
|
||||
obp = FloatField(null=True)
|
||||
slg = FloatField(null=True)
|
||||
|
||||
|
||||
class PitcherRatings(BaseModelScout):
|
||||
id = CharField(unique=True, primary_key=True)
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
cardset = ForeignKeyField(ScoutCardset)
|
||||
vs_hand = CharField()
|
||||
is_prep = BooleanField()
|
||||
homerun = FloatField()
|
||||
bp_homerun = FloatField()
|
||||
triple = FloatField()
|
||||
double_three = FloatField()
|
||||
double_two = FloatField()
|
||||
double_cf = FloatField()
|
||||
single_two = FloatField()
|
||||
single_one = FloatField()
|
||||
single_center = FloatField()
|
||||
bp_single = FloatField()
|
||||
hbp = FloatField()
|
||||
walk = FloatField()
|
||||
strikeout = FloatField()
|
||||
fo_slap = FloatField()
|
||||
fo_center = FloatField()
|
||||
groundout_a = FloatField()
|
||||
groundout_b = FloatField()
|
||||
xcheck_p = FloatField()
|
||||
xcheck_c = FloatField()
|
||||
xcheck_1b = FloatField()
|
||||
xcheck_2b = FloatField()
|
||||
xcheck_3b = FloatField()
|
||||
xcheck_ss = FloatField()
|
||||
xcheck_lf = FloatField()
|
||||
xcheck_cf = FloatField()
|
||||
xcheck_rf = FloatField()
|
||||
avg = FloatField(null=True)
|
||||
obp = FloatField(null=True)
|
||||
slg = FloatField(null=True)
|
||||
|
||||
|
||||
# scout_db.create_tables([BatterRatings, PitcherRatings])
|
||||
|
||||
|
||||
class CardColumns(BaseModelScout):
|
||||
id = CharField(unique=True, primary_key=True)
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
hand = CharField()
|
||||
b_ratings = ForeignKeyField(BatterRatings, null=True)
|
||||
p_ratings = ForeignKeyField(PitcherRatings, null=True)
|
||||
one_dice = CharField()
|
||||
one_results = CharField()
|
||||
one_splits = CharField()
|
||||
two_dice = CharField()
|
||||
two_results = CharField()
|
||||
two_splits = CharField()
|
||||
three_dice = CharField()
|
||||
three_results = CharField()
|
||||
three_splits = CharField()
|
||||
|
||||
|
||||
class Position(BaseModelScout):
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
cardset = ForeignKeyField(ScoutCardset)
|
||||
position = CharField()
|
||||
innings = IntegerField()
|
||||
range = IntegerField()
|
||||
error = IntegerField()
|
||||
arm = CharField(null=True)
|
||||
pb = IntegerField(null=True)
|
||||
overthrow = IntegerField(null=True)
|
||||
|
||||
|
||||
class BatterData(BaseModelScout):
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
cardset = ForeignKeyField(ScoutCardset)
|
||||
stealing = CharField()
|
||||
st_low = IntegerField()
|
||||
st_high = IntegerField()
|
||||
st_auto = BooleanField()
|
||||
st_jump = FloatField()
|
||||
bunting = CharField(null=True)
|
||||
hit_and_run = CharField(null=True)
|
||||
running = CharField()
|
||||
|
||||
|
||||
class PitcherData(BaseModelScout):
|
||||
player = ForeignKeyField(ScoutPlayer)
|
||||
cardset = ForeignKeyField(ScoutCardset)
|
||||
balk = IntegerField(null=True)
|
||||
wild_pitch = IntegerField(null=True)
|
||||
hold = CharField()
|
||||
starter_rating = IntegerField()
|
||||
relief_rating = IntegerField()
|
||||
closer_rating = IntegerField(null=True)
|
||||
batting = CharField(null=True)
|
||||
|
||||
|
||||
scout_db.create_tables([CardColumns, Position, BatterData, PitcherData])
|
||||
|
||||
|
||||
class CardOutput(BaseModelScout):
|
||||
name = CharField()
|
||||
hand = CharField()
|
||||
positions = CharField()
|
||||
stealing = CharField()
|
||||
bunting = CharField()
|
||||
hitandrun = CharField()
|
||||
running = CharField()
|
||||
|
||||
|
||||
scout_db.close()
|
||||
# scout_db = SqliteDatabase(
|
||||
# 'storage/card_creation.db',
|
||||
# pragmas={
|
||||
# 'journal_mode': 'wal',
|
||||
# 'cache_size': -1 * 64000,
|
||||
# 'synchronous': 0
|
||||
# }
|
||||
# )
|
||||
#
|
||||
#
|
||||
# class BaseModelScout(Model):
|
||||
# class Meta:
|
||||
# database = scout_db
|
||||
#
|
||||
#
|
||||
# class ScoutCardset(BaseModelScout):
|
||||
# set_title = CharField()
|
||||
# set_subtitle = CharField(null=True)
|
||||
#
|
||||
#
|
||||
# class ScoutPlayer(BaseModelScout):
|
||||
# sba_id = IntegerField(primary_key=True)
|
||||
# name = CharField()
|
||||
# fg_id = IntegerField()
|
||||
# br_id = CharField()
|
||||
# offense_col = IntegerField()
|
||||
# hand = CharField(default='R')
|
||||
#
|
||||
#
|
||||
# scout_db.create_tables([ScoutCardset, ScoutPlayer])
|
||||
#
|
||||
#
|
||||
# class BatterRatings(BaseModelScout):
|
||||
# id = CharField(unique=True, primary_key=True)
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# cardset = ForeignKeyField(ScoutCardset)
|
||||
# vs_hand = FloatField()
|
||||
# is_prep = BooleanField()
|
||||
# homerun = FloatField()
|
||||
# bp_homerun = FloatField()
|
||||
# triple = FloatField()
|
||||
# double_three = FloatField()
|
||||
# double_two = FloatField()
|
||||
# double_pull = FloatField()
|
||||
# single_two = FloatField()
|
||||
# single_one = FloatField()
|
||||
# single_center = FloatField()
|
||||
# bp_single = FloatField()
|
||||
# hbp = FloatField()
|
||||
# walk = FloatField()
|
||||
# strikeout = FloatField()
|
||||
# lineout = FloatField()
|
||||
# popout = FloatField()
|
||||
# flyout_a = FloatField()
|
||||
# flyout_bq = FloatField()
|
||||
# flyout_lf_b = FloatField()
|
||||
# flyout_rf_b = FloatField()
|
||||
# groundout_a = FloatField()
|
||||
# groundout_b = FloatField()
|
||||
# groundout_c = FloatField()
|
||||
# avg = FloatField(null=True)
|
||||
# obp = FloatField(null=True)
|
||||
# slg = FloatField(null=True)
|
||||
#
|
||||
#
|
||||
# class PitcherRatings(BaseModelScout):
|
||||
# id = CharField(unique=True, primary_key=True)
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# cardset = ForeignKeyField(ScoutCardset)
|
||||
# vs_hand = CharField()
|
||||
# is_prep = BooleanField()
|
||||
# homerun = FloatField()
|
||||
# bp_homerun = FloatField()
|
||||
# triple = FloatField()
|
||||
# double_three = FloatField()
|
||||
# double_two = FloatField()
|
||||
# double_cf = FloatField()
|
||||
# single_two = FloatField()
|
||||
# single_one = FloatField()
|
||||
# single_center = FloatField()
|
||||
# bp_single = FloatField()
|
||||
# hbp = FloatField()
|
||||
# walk = FloatField()
|
||||
# strikeout = FloatField()
|
||||
# fo_slap = FloatField()
|
||||
# fo_center = FloatField()
|
||||
# groundout_a = FloatField()
|
||||
# groundout_b = FloatField()
|
||||
# xcheck_p = FloatField()
|
||||
# xcheck_c = FloatField()
|
||||
# xcheck_1b = FloatField()
|
||||
# xcheck_2b = FloatField()
|
||||
# xcheck_3b = FloatField()
|
||||
# xcheck_ss = FloatField()
|
||||
# xcheck_lf = FloatField()
|
||||
# xcheck_cf = FloatField()
|
||||
# xcheck_rf = FloatField()
|
||||
# avg = FloatField(null=True)
|
||||
# obp = FloatField(null=True)
|
||||
# slg = FloatField(null=True)
|
||||
#
|
||||
#
|
||||
# # scout_db.create_tables([BatterRatings, PitcherRatings])
|
||||
#
|
||||
#
|
||||
# class CardColumns(BaseModelScout):
|
||||
# id = CharField(unique=True, primary_key=True)
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# hand = CharField()
|
||||
# b_ratings = ForeignKeyField(BatterRatings, null=True)
|
||||
# p_ratings = ForeignKeyField(PitcherRatings, null=True)
|
||||
# one_dice = CharField()
|
||||
# one_results = CharField()
|
||||
# one_splits = CharField()
|
||||
# two_dice = CharField()
|
||||
# two_results = CharField()
|
||||
# two_splits = CharField()
|
||||
# three_dice = CharField()
|
||||
# three_results = CharField()
|
||||
# three_splits = CharField()
|
||||
#
|
||||
#
|
||||
# class Position(BaseModelScout):
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# cardset = ForeignKeyField(ScoutCardset)
|
||||
# position = CharField()
|
||||
# innings = IntegerField()
|
||||
# range = IntegerField()
|
||||
# error = IntegerField()
|
||||
# arm = CharField(null=True)
|
||||
# pb = IntegerField(null=True)
|
||||
# overthrow = IntegerField(null=True)
|
||||
#
|
||||
#
|
||||
# class BatterData(BaseModelScout):
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# cardset = ForeignKeyField(ScoutCardset)
|
||||
# stealing = CharField()
|
||||
# st_low = IntegerField()
|
||||
# st_high = IntegerField()
|
||||
# st_auto = BooleanField()
|
||||
# st_jump = FloatField()
|
||||
# bunting = CharField(null=True)
|
||||
# hit_and_run = CharField(null=True)
|
||||
# running = CharField()
|
||||
#
|
||||
#
|
||||
# class PitcherData(BaseModelScout):
|
||||
# player = ForeignKeyField(ScoutPlayer)
|
||||
# cardset = ForeignKeyField(ScoutCardset)
|
||||
# balk = IntegerField(null=True)
|
||||
# wild_pitch = IntegerField(null=True)
|
||||
# hold = CharField()
|
||||
# starter_rating = IntegerField()
|
||||
# relief_rating = IntegerField()
|
||||
# closer_rating = IntegerField(null=True)
|
||||
# batting = CharField(null=True)
|
||||
#
|
||||
#
|
||||
# scout_db.create_tables([CardColumns, Position, BatterData, PitcherData])
|
||||
#
|
||||
#
|
||||
# class CardOutput(BaseModelScout):
|
||||
# name = CharField()
|
||||
# hand = CharField()
|
||||
# positions = CharField()
|
||||
# stealing = CharField()
|
||||
# bunting = CharField()
|
||||
# hitandrun = CharField()
|
||||
# running = CharField()
|
||||
#
|
||||
#
|
||||
# scout_db.close()
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user