97 lines
4.3 KiB
Python
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() |