Files
------/seed_data.py

219 lines
8.6 KiB
Python

from database import SessionLocal
from model import Advisor, Score, Student, Classes, Teacher, Employment
advisor_data = [
{"advisor_name": "张建国", "flag": 1, "gender": "男", "phone": "13812345601"},
{"advisor_name": "李美玲", "flag": 1, "gender": "女", "phone": "13912345602"},
{"advisor_name": "王浩宇", "flag": 1, "gender": "男", "phone": "13712345603"},
{"advisor_name": "陈雅婷", "flag": 1, "gender": "女", "phone": "13612345604"},
{"advisor_name": "刘志强", "flag": 1, "gender": "男", "phone": "13512345605"},
{"advisor_name": "赵晓雯", "flag": 1, "gender": "女", "phone": "13412345606"},
{"advisor_name": "黄俊凯", "flag": 1, "gender": "男", "phone": "13312345607"},
{"advisor_name": "周雨欣", "flag": 1, "gender": "女", "phone": "13212345608"},
{"advisor_name": "吴海涛", "flag": 1, "gender": "男", "phone": "13112345609"},
{"advisor_name": "徐思琪", "flag": 1, "gender": "女", "phone": "13012345610"},
]
score_data=[
{"student_id":1,"exam_id":1,"score":100},
{"student_id":1,"exam_id":2,"score":99},
{"student_id":1,"exam_id":3,"score":98},
{"student_id":2,"exam_id":1,"score":90},
{"student_id":2,"exam_id":2,"score":89},
{"student_id":2,"exam_id":3,"score":88},
{"student_id":3,"exam_id":1,"score":80},
{"student_id":3,"exam_id":2,"score":79},
{"student_id":3,"exam_id":3,"score":78},
{"student_id":4,"exam_id":1,"score":50},
{"student_id":4,"exam_id":2,"score":50},
{"student_id":4,"exam_id":3,"score":50}
]
student_data = [
{
"student_no": 20240001,
"student_name": "张小明",
"native_places": "广东深圳",
"school": "深圳大学",
"major": "计算机科学",
"enrollment_time": "2024-09-01 00:00:00",
"graduation_time": "2028-06-30 00:00:00",
"education": "本科",
"advisor_id": 1,
"age": 18,
"gender": "男",
"status": "在读",
"flag": 1,
"class_id": 1 # 归属班级cid=1 计科2401
},
{
"student_no": 20240002,
"student_name": "李华",
"native_places": "广东汕头",
"school": "深圳大学",
"major": "计算机科学",
"enrollment_time": "2024-09-01 00:00:00",
"graduation_time": "2028-06-30 00:00:00",
"education": "本科",
"advisor_id": 1,
"age": 18,
"gender": "男",
"status": "在读",
"flag": 1,
"class_id": 1 # 归属班级cid=1 计科2401
},
{
"student_no": 20240003,
"student_name": "小红",
"native_places": "广东广州",
"school": "深圳大学",
"major": "计算机科学",
"enrollment_time": "2024-09-01 00:00:00",
"graduation_time": "2028-06-30 00:00:00",
"education": "本科",
"advisor_id": 1,
"age": 18,
"gender": "女",
"status": "在读",
"flag": 1,
"class_id": 2 # 归属班级cid=2 计科2402
},
{
"student_no": 20240004,
"student_name": "阿琳",
"native_places": "广东佛山",
"school": "深圳大学",
"major": "计算机科学",
"enrollment_time": "2024-09-01 00:00:00",
"graduation_time": "2028-06-30 00:00:00",
"education": "本科",
"advisor_id": 1,
"age": 18,
"gender": "女",
"status": "在读",
"flag": 1,
"class_id": 3 # 归属班级cid=3 软工2401
},
{
"student_no": 20240005,
"student_name": "小宇",
"native_places": "广东东莞",
"school": "深圳大学",
"major": "计算机科学",
"enrollment_time": "2024-09-01 00:00:00",
"graduation_time": "2028-06-30 00:00:00",
"education": "本科",
"advisor_id": 1,
"age": 18,
"gender": "男",
"status": "在读",
"flag": 1,
"class_id": 4 # 归属班级cid=4 大数据2401
}
]
classes_data = [
{"cid": 1, "class_name": "计科2401", "start_time": "2024-09-01 08:00:00", "head_teacher": "王主任", "teacher": "李老师", "is_del": 0},
{"cid": 2, "class_name": "计科2402", "start_time": "2024-09-01 08:00:00", "head_teacher": "王主任", "teacher": "张老师", "is_del": 1},
{"cid": 3, "class_name": "软工2401", "start_time": "2024-09-01 08:00:00", "head_teacher": "刘主任", "teacher": "陈老师", "is_del": 0},
{"cid": 4, "class_name": "大数据2401", "start_time": "2024-09-01 08:00:00", "head_teacher": "刘主任", "teacher": "黄老师", "is_del": 1},
{"cid": 5, "class_name": "人工智能2401", "start_time": "2024-09-01 08:00:00", "head_teacher": "赵主任", "teacher": "周老师", "is_del": 0}
]
teacher_data = [
{"tid":1,"t_name":"李老师","phone":"13800138001","subject":"Python","entry_time":"2020-09-01","is_deleted":1},
{"tid":2,"t_name":"张老师","phone":"13800138002","subject":"高等数学","entry_time":"2021-02-10","is_deleted":1},
{"tid":3,"t_name":"陈老师","phone":"13800138003","subject":"数据库","entry_time":"2022-03-05","is_deleted":1},
{"tid":4,"t_name":"黄老师","phone":"13800138004","subject":"计算机网络","entry_time":"2021-09-01","is_deleted":1},
{"tid":5,"t_name":"赵老师","phone":"13800138005","subject":"操作系统","entry_time":"2023-01-15","is_deleted":1},
]
employment_data = [
{"student_id":1,"employment_start_time":"2026-07-01 09:00:00","offer_time":"2026-06-15 14:30:00","company_name":"腾讯","salary":18000.0},
{"student_id":2,"employment_start_time":"2026-07-10 08:30:00","offer_time":"2026-06-20 10:00:00","company_name":"字节跳动","salary":22000.0},
{"student_id":3,"employment_start_time":"2026-08-01 09:00:00","offer_time":"2026-07-05 16:20:00","company_name":"阿里","salary":20000.0},
{"student_id":4,"employment_start_time":None,"offer_time":"2026-08-10 11:10:00","company_name":"美团","salary":15000.0},
{"student_id":5,"employment_start_time":"2026-08-15 09:30:00","offer_time":None,"company_name":"百度","salary":16500.0},
]
db = SessionLocal()
#顾问表初始数据
def seed_advisor():
"""插入顾问种子数据(如果表为空)。"""
try:
if db.query(Advisor).count() == 0:
db.bulk_insert_mappings(Advisor, advisor_data)
db.commit()
print(f"顾问数据插入成功,共 {len(advisor_data)} 条")
else:
print("顾问表已有数据,跳过插入")
finally:
db.close()
#学生表初始数据
def seed_student():
try:
if db.query(Student).count() == 0:
db.bulk_insert_mappings(Student, student_data)
db.commit()
print(f"学生数据插入成功,共 {len(student_data)} 条")
else:
print("学生表已有数据,跳过插入")
finally:
db.close()
#成绩表初始数据
def seed_score():
try:
if db.query(Score).count() == 0:
db.bulk_insert_mappings(Score, score_data)
db.commit()
print(f"成绩数据插入成功,共{len(score_data)}条")
else:
print("成绩表已有数据,跳过插入")
finally:
db.close()
#班级表初始数据
def seed_classes():
try:
if db.query(Classes).count() == 0:
db.bulk_insert_mappings(Classes, classes_data)
db.commit()
print(f"班级数据插入成功,共{len(classes_data)}条")
else:
print("班级表已有数据,跳过插入")
finally:
db.close()
#老师表初始数据
def seed_teacher():
try:
if db.query(Teacher).count() == 0:
db.bulk_insert_mappings(Teacher, teacher_data)
db.commit()
print(f"老师数据插入成功,共{len(teacher_data)}条")
else:
print("老师表已有数据,跳过插入")
finally:
db.close()
#就业表初始数据
def seed_employment():
try:
if db.query(Employment).count() == 0:
db.bulk_insert_mappings(Employment, employment_data)
db.commit()
print(f"就业数据插入成功,共{len(employment_data)}条")
else:
print("就业表已有数据,跳过插入")
finally:
db.close()
#所有表数据
def seed_all():
seed_classes() # 1 班级
seed_advisor() # 2 顾问
seed_student() # 3 学生(依赖班级+顾问)
seed_teacher() # 4 老师
seed_score() # 5 成绩表(依赖学生sid、老师tid)
seed_employment()
# 中间表teacher_class / teacher_student 只建表,不填充数据,注释掉
# seed_teacher_class(db)
# seed_teacher_student(db)