aiforge_python/project_evaluation_analysis/generate_history_data.py

97 lines
4.3 KiB
Python

import sys
import os
import config
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
import warnings
from datetime import datetime
from utils import get_conn, get_before_date, compare_date, get_between_dates
warnings.filterwarnings("ignore")
def generate_history_data():
"""
生成数据
:return:
"""
conn = get_conn()
curs = conn.cursor()
query_last_date_sql = f"""
select date_str from ai_repository_history t group by date_str order by date_str desc limit 1
"""
curs.execute(query_last_date_sql)
rows = curs.fetchall()
# 生成距今最多60天以前的数据
last_date = ''
before_60_day_date = get_before_date(60)
if len(rows) > 0:
last_date = rows[0][0]
if compare_date(last_date, before_60_day_date):
last_date = before_60_day_date
else:
last_date = before_60_day_date
current_date = datetime.now().strftime('%Y-%m-%d')
date_list = get_between_dates(last_date, current_date)
if len(date_list) > 0:
for date in date_list:
if current_date == date:
config.logger.info(f"插入今天{date}的repository数据")
sql = f"""
INSERT INTO
ai_repository_history
SELECT
nextval('ai_repository_history_id_seq') as id, owner_id, owner_name, lower_name, name, description,
website, original_service_type, original_url, default_branch, creator_id,
num_watches, num_stars, num_forks, num_issues, num_closed_issues, num_pulls, num_closed_pulls,
num_milestones, num_closed_milestones, num_commit, repo_type, is_private, is_empty,
is_archived, is_mirror, status, is_fork, fork_id, is_template, template_id, size,
is_fsck_enabled, close_issues_via_commit_in_any_branch, topics, avatar, contract_address,
balance, block_chain_status, clone_cnt, git_clone_cnt, created_unix, updated_unix,
alias, lower_alias, id as repo_id, '{date}' as date_str, {False}
FROM
repository
"""
else:
if config.generate_fake_data_enable==False:
config.logger.info(f"因generate_fake_data_enable=False,故取消插入日期{date}的repository数据")
continue
config.logger.info(f"插入日期{date}的repository数据")
sql = f"""
INSERT INTO
ai_repository_history
SELECT
nextval('ai_repository_history_id_seq') as id, owner_id, owner_name, lower_name, name, description,
website, original_service_type, original_url, default_branch, creator_id,
(ceil(random() * 10) + num_watches) as num_watches,
(ceil(random() * 10) + num_stars) as num_stars,
(ceil(random() * 10) + num_forks) as num_forks,
(ceil(random() * 10) + num_issues) as num_issues,
(ceil(random() * 10) + num_closed_issues) as num_closed_issues,
(ceil(random() * 10) + num_pulls) as num_pulls,
(ceil(random() * 10) + num_closed_pulls) as num_closed_pulls,
num_milestones, num_closed_milestones,
(ceil(random() * 10) + num_commit) as num_commit, repo_type, is_private, is_empty,
is_archived, is_mirror, status, is_fork, fork_id, is_template, template_id, size,
is_fsck_enabled, close_issues_via_commit_in_any_branch, topics, avatar, contract_address,
balance, block_chain_status,
(ceil(random() * 10) + clone_cnt) as clone_cnt, git_clone_cnt, created_unix, updated_unix,
alias, lower_alias, id as repo_id, '{date}' as date_str, {True}
FROM
repository
"""
curs.execute(sql)
conn.commit()
conn.close()
config.logger.info("repository历史数据插入完成")
if __name__ == '__main__':
generate_history_data()