parent
							
								
									f1bbed6066
								
							
						
					
					
						commit
						5c73d4c0cf
					
				
				 4 changed files with 140 additions and 14 deletions
			
			
		@ -1,12 +1,66 @@ | 
				
			||||
from orm_db import * | 
				
			||||
from sqlalchemy import select, desc | 
				
			||||
 | 
				
			||||
try: | 
				
			||||
    get_last_data_stmt = select(History).order_by(desc('id')).limit(1) | 
				
			||||
    last_data_result = db_session.execute(get_last_data_stmt).scalar() | 
				
			||||
    print(last_data_result) | 
				
			||||
except Exception as e: | 
				
			||||
    print(e) | 
				
			||||
 | 
				
			||||
last_blue = last_data_result.blue | 
				
			||||
print(last_blue) | 
				
			||||
from db import * | 
				
			||||
from util import * | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# last_data = get_last_data() | 
				
			||||
# print(last_data) | 
				
			||||
# | 
				
			||||
# date_id_data = get_data_by_date_id('2023068') | 
				
			||||
# print(date_id_data) | 
				
			||||
 | 
				
			||||
# 获取全部数据 | 
				
			||||
def get_all_data(): | 
				
			||||
    return db_get_all_data() | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# 获取所有篮球的统计数据 | 
				
			||||
def get_all_blue(): | 
				
			||||
    all_blue = dict() | 
				
			||||
    all_data = db_get_all_data() | 
				
			||||
    if all_data is not False: | 
				
			||||
        for data in all_data: | 
				
			||||
            if data['blue'] in all_blue.keys(): | 
				
			||||
                all_blue[data['blue']] += 1 | 
				
			||||
            else: | 
				
			||||
                all_blue[data['blue']] = 1 | 
				
			||||
        return dict_sort(all_blue) | 
				
			||||
    else: | 
				
			||||
        return False | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# 获取蓝球统计次数与平均值的额偏差 | 
				
			||||
def get_delta_blue(_blue_data): | 
				
			||||
    total = 0 | 
				
			||||
    if _blue_data is not False: | 
				
			||||
        for _num in _blue_data.values(): | 
				
			||||
            total += _num | 
				
			||||
        average = total / len(_blue_data.keys()) | 
				
			||||
        print(average) | 
				
			||||
        _delta_blue_dict = dict() | 
				
			||||
        for _key, _val in _blue_data.items(): | 
				
			||||
            _delta_blue_dict[_key] = _blue_data[_key] - average | 
				
			||||
        return _delta_blue_dict | 
				
			||||
 | 
				
			||||
 | 
				
			||||
print(get_delta_blue(get_all_blue())) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# 获取预测的数据 | 
				
			||||
def get_blue_forecast(_blue_data, _method, _num): | 
				
			||||
    last_blue = db_get_last_data()['blue'] | 
				
			||||
    if last_blue is False: | 
				
			||||
        return False | 
				
			||||
    if _method == 'prv':  # 当前一期往前推num期,包含此期数据 | 
				
			||||
        prv_blue_id_list = [] | 
				
			||||
        for _data in _blue_data: | 
				
			||||
            if _data['blue'] == last_blue: | 
				
			||||
                print(_data) | 
				
			||||
                prv_blue_id_list.append(_data['id']) | 
				
			||||
        print(prv_blue_id_list) | 
				
			||||
    elif _method == 'post':  # 当前一期往后num期,不包含此期的数据 | 
				
			||||
        pass | 
				
			||||
    else: | 
				
			||||
        return False | 
				
			||||
 | 
				
			||||
 | 
				
			||||
get_blue_forecast(get_all_data(), 'prv', 5) | 
				
			||||
 | 
				
			||||
@ -0,0 +1,62 @@ | 
				
			||||
from orm_db import History, BlueForecastFiveAll, BlueForecastThreeAll, RedForecastAll | 
				
			||||
from sqlalchemy import engine | 
				
			||||
from sqlalchemy.orm import sessionmaker | 
				
			||||
from sqlalchemy import select, desc, asc | 
				
			||||
 | 
				
			||||
# 初始化数据库实例 | 
				
			||||
DB_URI = 'mysql+pymysql://root:Sxzgx1209@home.rogersun.cn:3306/lottery' | 
				
			||||
db_engine = engine.create_engine(DB_URI, encoding='utf8', echo=True) | 
				
			||||
db_session = sessionmaker(bind=db_engine)() | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def db_get_last_data(): | 
				
			||||
    try: | 
				
			||||
        get_last_data_stmt = select(History).order_by(desc('id')).limit(1) | 
				
			||||
        last_data_result = db_session.execute(get_last_data_stmt).scalar() | 
				
			||||
        return history_scalar(last_data_result) | 
				
			||||
    except Exception as e: | 
				
			||||
        print(e) | 
				
			||||
        return False | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def db_get_all_data(): | 
				
			||||
    try: | 
				
			||||
        get_all_data_stmt = select(History).order_by(asc(History.id)) | 
				
			||||
        all_data_result = db_session.execute(get_all_data_stmt).scalars() | 
				
			||||
        return history_scalars(all_data_result) | 
				
			||||
    except Exception as e: | 
				
			||||
        print(e) | 
				
			||||
        return False | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def db_get_data_by_date_id(_date_id): | 
				
			||||
    try: | 
				
			||||
        get_by_open_date_stmt = select(History).where(History.dateId == _date_id) | 
				
			||||
        open_date_result = db_session.execute(get_by_open_date_stmt).scalar() | 
				
			||||
        return history_scalar(open_date_result) | 
				
			||||
    except Exception as e: | 
				
			||||
        print(e) | 
				
			||||
        return False | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def history_scalar(_scalar): | 
				
			||||
    _data = dict() | 
				
			||||
    _data['id'] = _scalar.id | 
				
			||||
    _data['dateId'] = _scalar.dateId | 
				
			||||
    _data['openDate'] = _scalar.openDate | 
				
			||||
    _data['red'] = _scalar.red | 
				
			||||
    _data['blue'] = _scalar.blue | 
				
			||||
    return _data | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def history_scalars(_scalars): | 
				
			||||
    _list = [] | 
				
			||||
    for row in _scalars: | 
				
			||||
        _data = dict() | 
				
			||||
        _data['id'] = row.id | 
				
			||||
        _data['dateId'] = row.dateId | 
				
			||||
        _data['openDate'] = row.openDate | 
				
			||||
        _data['red'] = row.red | 
				
			||||
        _data['blue'] = row.blue | 
				
			||||
        _list.append(_data) | 
				
			||||
    return _list | 
				
			||||
@ -0,0 +1,10 @@ | 
				
			||||
def dict_sort(_dict, _sort_by='key', _reverse=False): | 
				
			||||
    if _sort_by == 'key': | 
				
			||||
        _result = sorted(_dict.items(), key=lambda x: x[0], reverse=_reverse) | 
				
			||||
    else: | 
				
			||||
        _result = sorted(_dict.items(), key=lambda x: x[1], reverse=_reverse) | 
				
			||||
    _result_dict = dict() | 
				
			||||
 | 
				
			||||
    for r in _result: | 
				
			||||
        _result_dict[r[0]] = r[1] | 
				
			||||
    return _result_dict | 
				
			||||
					Loading…
					
					
				
		Reference in new issue