-2
starting_pitchers
というテーブルがあります。私はそのテーブルの統計データを使って、と呼ばれる個別のpythonファイルで複合ランキングを作成しました。関数から返された辞書を使用してsqlalchemyで新しいテーブルを作成する方法
複合ランキングは、キーが投手の名前(元のテーブルの一意の列)であり、値が他の統計情報の組み合わせを表す浮動小数点の辞書です。 average.py
ファイルで、名前(辞書キー)が元のテーブルの名前列と一致し、それに応じて値を挿入する複合値からなる元のテーブルに新しい列を作成するにはどうすればよいですか? **
を使用
from flask_sqlalchemy import SQLAlchemy
from models import starting_pitchers
from db import db
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from main import app
engine = create_engine('mysql+pymysql://baseball:[email protected]:8889/baseball', echo=True)
def average():
CFIP_sort_list = []
for i in starting_pitchers.query.order_by('CFIP asc'):
CFIP_sort_list.append(i)
xFIP_sort_list = []
for ii in starting_pitchers.query.order_by('xFIP asc'):
xFIP_sort_list.append(ii)
FIP_sort_list = []
for iii in starting_pitchers.query.order_by('FIP asc'):
FIP_sort_list.append(iii)
KperBB_sort_list = []
for iv in starting_pitchers.query.order_by('KperBB desc'):
KperBB_sort_list.append(iv)
Total_Ks_sort_list = []
for v in starting_pitchers.query.order_by('Total_Ks desc'):
Total_Ks_sort_list.append(v)
WHIP_sort_list = []
for vi in starting_pitchers.query.order_by('WHIP asc'):
WHIP_sort_list.append(vi)
ERA_sort_list = []
for vii in starting_pitchers.query.order_by('ERA asc'):
ERA_sort_list.append(vii)
IP_sort_list = []
for viii in starting_pitchers.query.order_by('Innings_Pitched desc'):
IP_sort_list.append(viii)
Wins_sort_list = []
for ix in starting_pitchers.query.order_by('Wins desc'):
Wins_sort_list.append(ix)
QS_Rate_sort_list = []
for x in starting_pitchers.query.order_by('Quality_Start_Rate desc'):
QS_Rate_sort_list.append(x)
GB_Rate_sort_list = []
for xi in starting_pitchers.query.order_by('Ground_Ball_Rate desc'):
GB_Rate_sort_list.append(xi)
SC_Rate_sort_list = []
for xii in starting_pitchers.query.order_by('Soft_Contact_Rate desc'):
SC_Rate_sort_list.append(xii)
FP_Rank_sort_list = []
for xiii in starting_pitchers.query.order_by('FP_Rank asc'):
FP_Rank_sort_list.append(xiii)
SW_Rank_sort_list = []
for xiii in starting_pitchers.query.order_by('SW_Rank asc'):
SW_Rank_sort_list.append(xiii)
CT_Rank_sort_list = []
for xiv in starting_pitchers.query.order_by('CT_Rank asc'):
CT_Rank_sort_list.append(xiv)
HC_Rank_sort_list = []
for xv in starting_pitchers.query.order_by('HC_Rank asc'):
HC_Rank_sort_list.append(xv)
Sorted_avg_dict = {}
for o in CFIP_sort_list:
index_collector = (3 * CFIP_sort_list.index(o))
if o in xFIP_sort_list:
index_collector += xFIP_sort_list.index(o)
if o in FIP_sort_list:
index_collector += FIP_sort_list.index(o)
if o in KperBB_sort_list:
index_collector += KperBB_sort_list.index(o)
if o in Total_Ks_sort_list:
index_collector += Total_Ks_sort_list.index(o)
if o in WHIP_sort_list:
index_collector += WHIP_sort_list.index(o)
if o in ERA_sort_list:
index_collector += ERA_sort_list.index(o)
if o in IP_sort_list:
index_collector += IP_sort_list.index(o)
if o in Wins_sort_list:
index_collector += WHIP_sort_list.index(o)
if o in QS_Rate_sort_list:
index_collector += QS_Rate_sort_list.index(o)
if o in GB_Rate_sort_list:
index_collector += GB_Rate_sort_list.index(o)
if o in SC_Rate_sort_list:
index_collector += SC_Rate_sort_list.index(o)
if o in FP_Rank_sort_list:
index_collector += 3 * (FP_Rank_sort_list.index(o))
if o in SW_Rank_sort_list:
index_collector += 3 * (SW_Rank_sort_list.index(o))
if o in CT_Rank_sort_list:
index_collector += 3 * (SW_Rank_sort_list.index(o))
if o in HC_Rank_sort_list:
index_collector += 3 * (HC_Rank_sort_list.index(o))
Sorted_avg_dict[o.Name] = (index_collector/26)
print(Sorted_avg_dict)
return Sorted_avg_dict
def insert_column():
name_values_list = [{'Chris Sale': 1.5, 'Corey Kluber': 2.3076923076923075, 'Max Scherzer': 1.2692307692307692, 'Clayton Kershaw': 4.1923076923076925, 'Stephen Strasburg': 5.423076923076923,
'Zack Greinke': 4.423076923076923, 'Jacob Degrom': 5.115384615384615,
'Yu Darvish': 6.346153846153846, 'Madison Bumgarner': 6.961538461538462, 'Jon Lester': 7.461538461538462}]
for name_value_dict in name_values_list:
starting_pitchers.insert().values(**name_value_dict)
if __name__ == "__main__":
db.app = app
average()
insert_column()
model.py
from db import db
class starting_pitchers(db.Model):
Name = db.Column(db.String(80), unique=True)
ID = db.Column(db.Integer, primary_key=True)
CFIP = db.Column(db.Integer)
xFIP = db.Column(db.Float)
FIP = db.Column(db.Float)
KperBB = db.Column(db.Float)
Total_Ks = db.Column(db.Integer)
WHIP = db.Column(db.Float)
ERA = db.Column(db.Float)
Innings_Pitched = db.Column(db.Float)
Wins = db.Column(db.Integer)
Quality_Start_Rate = db.Column(db.Integer)
Ground_Ball_Rate = db.Column(db.Float)
Soft_Contact_Rate = db.Column(db.Float)
FP_Rank = db.Column(db.Integer, unique=True)
SW_Rank = db.Column(db.Integer)
CT_Rank = db.Column(db.Integer)
HC_Rank = db.Column(db.Integer)
Composite_Rank = db.Column(db.Float)
def __init__(self, Name, CFIP, xFIP, FIP, KperBB, Total_Ks, WHIP, ERA, Innings_Pitched, Wins, Quality_Start_Rate,
Ground_Ball_Rate, Soft_Contact_Rate, FP_Rank, SW_Rank, CT_Rank, HC_Rank, Composite_Rank):
self.Name = Name
self.CFIP = CFIP
self.xFIP = xFIP
self.FIP = FIP
self.KperBB = KperBB
self.Total_Ks = Total_Ks
self.WHIP = WHIP
self.ERA = ERA
self.Innings_Pitched = Innings_Pitched
self.Wins = Wins
self.Quality_Start_Rate = Quality_Start_Rate
self.Ground_Ball_Rate = Ground_Ball_Rate
self.Soft_Contact_Rate = Soft_Contact_Rate
self.FP_Rank = FP_Rank
self.SW_Rank = SW_Rank
self.CT_Rank = CT_Rank
self.HC_Rank = HC_Rank
self.Composite_Rank = Composite_Rank
トレースバック(最新の呼び出しの最後): insert_column()insert_columnで ファイル "average.py"、ライン109、 starting_pitchers.insert()内 ファイル "average.py"、ライン115、値(。 ** name_value_dict) AttributeError:型オブジェクト 'starting_pitchers'に属性 'insert'がありません –
トレースバックが私にこれをくれました^^ –
'starting_pitchers'をどのように初期化したのか投稿できますか? –