import pandas as pd from datetime import datetime from pytz import timezone from dao.Database import Database from data_model import MysqlConfig, OddsJamOrder, OddjamsBet def generate_oddjams_bet(data: OddsJamOrder): # 怎么判断一个 oddjam order 是不是下单成功? bet_name = data.home_bet_name sport_books = data.home_sportsbooks if data.away_price > data.away_no_vig_price: bet_name = data.away_bet_name sport_books = data.away_sportsbooks market_name = data.market sport = data.sport league = data.league game_id = data.game_id notes = data.bet_id bet_type = 'Normal' event_name = '' odds = 110 stake = 1 # 时区转换, mysql 中的 game start date 是 utc 时间? game_start_date = data.start_date my_datetime_with_tz = game_start_date.replace(tzinfo=timezone('UTC')) eastern = timezone('US/Eastern') eastern_datetime = my_datetime_with_tz.astimezone(eastern) game_start_date = eastern_datetime.strftime('%m/%d/%Y, %H:%M EDT') for sport_book in sport_books: yield OddjamsBet( Sportsbook=sport_book, BetName=bet_name, MarketName=market_name, Odds=odds, Stake=stake, EventName=event_name, Sport=sport, League=league, GameID=game_id, GameStartDate=game_start_date, BetType=bet_type, Notes=notes ) if __name__ == '__main__': config_file_path = 'config\mysql_config.json' mysql_config = MysqlConfig.parse_file(config_file_path) dao = Database(mysql_config) # query select_query = "SELECT * FROM bet.oddsjam_order limit 10;" raw_data_list = dao.fetchall(query=select_query) order_data_list = [OddsJamOrder(**data) for data in raw_data_list] bet_list = [] for order in order_data_list: bet_list.extend(list(generate_oddjams_bet(order))) bet_list = [data.model_dump() for data in bet_list] bet_df = pd.DataFrame(bet_list) bet_df.to_csv('bet.csv', index=False, encoding='utf-8-sig')