Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,19 @@ python proxyPool.py server

### 工具特点
- 支持自定义导出文件名(在脚本开头修改 `EXPORT_FILENAME` 变量即可)
- 自动导出所有字段,字段顺序与数据库一致
- 自动导出所有字段,字段顺序与数据库一致(含新增的 `school_level` 学校层级列)
- 按省份、学校名称排序,方便查阅
- 分批导出(每批1000行),即使数据量很大(如14万行)也不会内存爆炸
- 生成的 csv 文件可直接用 Excel 打开,无乱码

### 导出字段说明

导出的 CSV 文件包含 `major` 表所有字段,其中:

- **`school_name`**:学校名称
- **`school_level`**:学校层级,取值为 `985`、`211`、`双一流` 的斜杠拼接组合(如 `985/211/双一流`),未匹配时为空字符串
- 其余字段含义见数据库表注释

### 使用方法

1. 确保已完成数据库配置,并已安装依赖。
Expand Down
2 changes: 2 additions & 0 deletions data/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from config import config
from data import entity
from data.entity import Major
from data.school_level import get_school_level

database = config.get('database', {})

Expand Down Expand Up @@ -35,6 +36,7 @@ def insert(item):
exam_subjects[3] = km.get("km4Vo", {}).get("kskmmc", "")
major = Major(
school_name=item.get("dwmc"),
school_level=get_school_level(item.get("dwmc", "")),
major_name=item.get("zymc"),
province=item.get("szss"),
major_code=item.get("zydm"),
Expand Down
1 change: 1 addition & 0 deletions data/entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class Major(Base):

id = Column(Integer, primary_key=True, autoincrement=True, comment='主键')
school_name = Column(String(255), nullable=True, comment='学校名称')
school_level = Column(String(50), nullable=True, comment='学校层级(985/211/双一流)')
major_name = Column(String(255), nullable=True, comment='专业名称')
province = Column(String(255), nullable=True, comment='所在省份')
major_code = Column(String(255), nullable=True, comment='专业代码')
Expand Down
145 changes: 145 additions & 0 deletions data/school_level.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
"""学校层级映射数据

数据来源:985工程、211工程、双一流(第二轮,2022年)官方名单。
若一所学校同时属于多个层级,get_school_level() 返回值以斜杠拼接,例如 "985/211/双一流"。
未匹配到时返回空字符串。
"""

# 985工程高校(39所)
SCHOOLS_985 = {
"北京大学", "清华大学", "中国人民大学", "北京航空航天大学", "北京理工大学",
"中国农业大学", "北京师范大学", "中央民族大学", "南开大学", "天津大学",
"大连理工大学", "吉林大学", "哈尔滨工业大学", "复旦大学", "同济大学",
"上海交通大学", "华东师范大学", "南京大学", "东南大学", "浙江大学",
"中国科学技术大学", "厦门大学", "山东大学", "中国海洋大学", "武汉大学",
"华中科技大学", "湖南大学", "中南大学", "中山大学", "华南理工大学",
"四川大学", "重庆大学", "电子科技大学", "西安交通大学", "西北工业大学",
"兰州大学", "西北农林科技大学", "国防科技大学", "东北大学",
}

# 211工程高校(116所,含全部985高校)
SCHOOLS_211 = SCHOOLS_985 | {
# 北京
"北京交通大学", "北京工业大学", "北京科技大学", "北京化工大学",
"北京邮电大学", "对外经济贸易大学", "中央财经大学", "北京外国语大学",
"中国传媒大学", "中央音乐学院", "北京体育大学", "中国政法大学",
"华北电力大学", "中国矿业大学(北京)", "中国地质大学(北京)",
"中国石油大学(北京)", "北京林业大学", "中国中医科学院",
# 天津
"天津医科大学", "河北工业大学",
# 辽宁
"辽宁大学", "大连海事大学",
# 吉林
"延边大学", "东北师范大学",
# 黑龙江
"哈尔滨工程大学", "东北农业大学", "东北林业大学",
# 上海
"华东理工大学", "东华大学", "上海外国语大学", "上海财经大学", "上海大学",
# 江苏
"苏州大学", "南京师范大学", "南京航空航天大学", "南京理工大学",
"中国矿业大学", "河海大学", "江南大学", "南京农业大学", "中国药科大学",
# 浙江(无额外)
# 安徽
"安徽大学", "合肥工业大学",
# 福建
"福州大学",
# 江西
"南昌大学",
# 山东
"中国石油大学(华东)",
# 河南
"郑州大学",
# 湖北
"武汉理工大学", "中国地质大学(武汉)", "华中师范大学",
"华中农业大学", "中南财经政法大学",
# 湖南
"湖南师范大学",
# 广东
"暨南大学", "华南师范大学",
# 广西
"广西大学",
# 海南
"海南大学",
# 四川
"西南交通大学", "西南财经大学",
# 重庆
"西南大学",
# 贵州
"贵州大学",
# 云南
"云南大学",
# 西藏
"西藏大学",
# 陕西
"西安电子科技大学", "长安大学", "西北大学",
# 甘肃(无额外)
# 内蒙古
"内蒙古大学",
# 宁夏
"宁夏大学",
# 新疆
"新疆大学",
# 青海
"青海大学",
# 石河子
"石河子大学",
# 太原
"太原理工大学",
}

# 双一流高校(第二轮,2022年,147所)
SCHOOLS_SHUANGYILIU = SCHOOLS_985 | {
# 世界一流大学建设高校(非985)
"郑州大学", "云南大学", "新疆大学",
# 世界一流学科建设高校
"北京交通大学", "北京工业大学", "北京科技大学", "北京化工大学",
"北京邮电大学", "北京林业大学", "北京协和医学院", "北京中医药大学",
"对外经济贸易大学", "中央财经大学", "北京外国语大学", "中国传媒大学",
"中央音乐学院", "北京体育大学", "中国政法大学", "华北电力大学",
"中国矿业大学(北京)", "中国地质大学(北京)", "中国石油大学(北京)",
"天津工业大学", "天津医科大学", "天津中医药大学", "河北工业大学",
"太原理工大学", "内蒙古大学",
"辽宁大学", "大连海事大学",
"延边大学", "东北师范大学",
"哈尔滨工程大学", "东北农业大学", "东北林业大学",
"华东理工大学", "东华大学", "上海外国语大学", "上海财经大学",
"上海大学", "上海中医药大学",
"苏州大学", "南京师范大学", "南京航空航天大学", "南京理工大学",
"中国矿业大学", "河海大学", "江南大学", "南京农业大学", "中国药科大学",
"南京医科大学",
"安徽大学", "合肥工业大学",
"福州大学",
"南昌大学",
"中国石油大学(华东)",
"武汉理工大学", "中国地质大学(武汉)", "华中师范大学",
"华中农业大学", "中南财经政法大学",
"湖南师范大学",
"暨南大学", "华南师范大学", "南方科技大学", "广州中医药大学",
"广西大学",
"海南大学",
"西南交通大学", "西南财经大学", "成都理工大学",
"西南大学",
"贵州大学",
"西藏大学",
"西安电子科技大学", "长安大学", "西北大学",
"宁夏大学",
"石河子大学",
"青海大学",
}


def get_school_level(school_name: str) -> str:
"""根据学校名称返回层级标签(985/211/双一流)。

若学校属于多个层级,用斜杠拼接(如 "985/211/双一流")。
未匹配到任何层级时返回空字符串。
"""
name = school_name.strip() if school_name else ""
levels = []
if name in SCHOOLS_985:
levels.append("985")
if name in SCHOOLS_211:
levels.append("211")
if name in SCHOOLS_SHUANGYILIU:
levels.append("双一流")
return "/".join(levels)
1 change: 1 addition & 0 deletions yzw.sql
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `major`;
CREATE TABLE `major` (
`school_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学校名称',
`school_level` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学校层级(985/211/双一流)',
`major_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业名称',
`province` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所在省份',
`major_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业代码',
Expand Down