parent
f1bbed6066
commit
5c73d4c0cf
4 changed files with 140 additions and 14 deletions
@ -1,12 +1,66 @@ |
|||||||
from orm_db import * |
from db import * |
||||||
from sqlalchemy import select, desc |
from util import * |
||||||
|
|
||||||
try: |
|
||||||
get_last_data_stmt = select(History).order_by(desc('id')).limit(1) |
# last_data = get_last_data() |
||||||
last_data_result = db_session.execute(get_last_data_stmt).scalar() |
# print(last_data) |
||||||
print(last_data_result) |
# |
||||||
except Exception as e: |
# date_id_data = get_data_by_date_id('2023068') |
||||||
print(e) |
# print(date_id_data) |
||||||
|
|
||||||
last_blue = last_data_result.blue |
# 获取全部数据 |
||||||
print(last_blue) |
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