From 3dcfaa550082a082e1866c1cd195fc4cf7af7979 Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Mon, 21 Sep 2026 21:33:17 +0800 Subject: [PATCH 1/4] =?UTF-8?q?amend!=20=E6=B7=BB=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新字段 --- .idea/.gitignore | 12 ++++++++++ stu_jiuye/CURD_api.py | 32 ++++++++++++------------- stu_jiuye/dao.py | 56 +++++++++++++++++++++---------------------- stu_jiuye/database.py | 1 + stu_jiuye/model.py | 16 ++++++------- stu_jiuye/request.py | 14 +++++------ 6 files changed, 72 insertions(+), 59 deletions(-) create mode 100644 .idea/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c3ea340 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,12 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# 已忽略包含查询文件的默认文件夹 +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +*.xml +*.iml \ No newline at end of file diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index eb02158..403a5c7 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -9,25 +9,25 @@ CURD=APIRouter() @CURD.get('/emp',tags=['查询就业信息']) def get_stuinfo( #查询学生就业信息 - stuname:str| None = None - ,stuclass:str| None = None - ,compname:str|None=None + sname:str| None = None + ,class_num:int| None = None + ,employment_company:str|None=None ,min_salary:int=0 ,max_salary:int|None=None ,somewhere:str|None=None - ,employment_open_date:datetime.date|None=None - ,offer_date:datetime.date|None=None + ,employment_open_time:datetime.date|None=None + ,offer_recived_time:datetime.date|None=None ,db=Depends(get_db) ): #查询条件 r=get_emp_dao( #调用函数 - stuname, - stuclass, - compname, + sname, + class_num, + employment_company, min_salary, max_salary, somewhere, - employment_open_date, - offer_date, + employment_open_time, + offer_recived_time, db ) if r: @@ -91,23 +91,23 @@ def delete_stuinfo( #删除模块 @CURD.get('/Top5',tags=['就业薪资Top5']) def salarytop5(db=Depends(get_db)): - q = db.query(Employments,Company.compname) \ + q = db.query(Employments,Company.employment_company) \ .join(Company, Employments.company_id == Company.id) \ .filter(Employments.is_deleted == 0)\ - .order_by(Employments.salary.desc())\ + .order_by(Employments.employment_salary.desc())\ .offset(0).limit(5) .all() - return [{'学生姓名':i.stuname,'学生班级':i.stuclass,'就业时间':i.offer_date,'公司':compname} for i,compname in q] + return [{'学生姓名':i.sname,'学生班级编号':i.class_num,'就业时间':i.offer_recived_time,'公司':employment_company} for i,employment_company in q] @CURD.get('/worktime',tags=['学生就业时常']) def worktime(db=Depends(get_db)): q = db.query(Employments).all() - return [{'学生姓名':i.stuname,'就业时常':f'{i.offer_date-i.employment_open_date}'} for i in q] + return [{'学生姓名':i.stuname,'就业时常':f'{i.offer_recived_time-i.employment_open_time}'} for i in q] @CURD.get('/avgworktime',tags=['学生平均就业时常']) def worktime(db=Depends(get_db)): q = db.query(Employments)\ - .filter(Employments.employment_open_date is not None)\ + .filter(Employments.employment_open_time is not None)\ .all() - return [{'学生姓名':i.stuname,'平均就业时常':f'{(i.offer_date-i.employment_open_date)/len(q)}'} for i in q] \ No newline at end of file + return [{'学生姓名':i.stuname,'平均就业时常':f'{(i.offer_recived_time-i.employment_open_time)/len(q)}'} for i in q] \ No newline at end of file diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 34e0245..09196a1 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -33,7 +33,7 @@ def add_address_dao(o,db): #添加地址区域信息函数 try: o.pop('id', None) #摘除id字段,自增字段无需手动添加 o1 = Address( **o) #实例化参数 - db.add(o1) #添加数据进入表 + db.add(o1) #添加数据进入表 except Exception as e: #失败返回 print(f'添加失败,{e}') db.rollback() #回滚数据 @@ -58,58 +58,58 @@ def update_emp_dao(id,update_data,db): #更新数据函数 def get_emp_dao( #获取学生就业信息函数 # stuid, - stuname - ,stuclass - ,compname + sname + ,class_num + ,employment_company ,min_salary ,max_salary ,somewhere - ,employment_open_date - ,offer_date + ,employment_open_time + ,offer_recived_time ,db # ,page # ,page_size ): #根据选择条件获取信息 - q = db.query(Employments,Company.compname,Address.somewhere)\ + q = db.query(Employments,Company.employment_company,Address.somewhere)\ .join(Company,Employments.company_id==Company.id)\ .join(Address,Company.address_id==Address.id)\ .filter(Employments.is_deleted == 0) #连接公司表和地址表,筛选未被删除信息 # if stuid: # q = q.filter( Employments.id == stuid ) - if stuname: #根据学生姓名筛选 - q = q.filter( Employments.stuname == stuname ) - if stuclass: - q = q.filter(Employments.stuclass == stuclass) + if sname: #根据学生姓名筛选 + q = q.filter( Employments.sname == sname ) + if class_num: + q = q.filter(Employments.class_num == class_num) if somewhere: q = q.filter(Address.somewhere.like(f'%{somewhere}%')) - if compname: #根据公司姓名筛选 - q=q.filter(Company.compname.like(f'%{compname}%')) + if employment_company: #根据公司姓名筛选 + q=q.filter(Company.employment_company.like(f'%{employment_company}%')) # r = q.offset( (page-1)*page_size ).limit( page_size ).all() if min_salary is not None: #根据最小薪资筛选 - q = q.filter(Employments.salary >= min_salary) + q = q.filter(Employments.employment_salary >= min_salary) if max_salary is not None: ##根据最大薪资筛选 - q = q.filter(Employments.salary <= max_salary) - if employment_open_date: - q = q.filter(Employments.employment_open_date == employment_open_date) - if offer_date: - q = q.filter(Employments.offer_date == offer_date) + q = q.filter(Employments.employment_salary <= max_salary) + if employment_open_time: + q = q.filter(Employments.employment_open_time == employment_open_time) + if offer_recived_time: + q = q.filter(Employments.offer_recived_time == offer_recived_time) r= q.all() if r: return [ {"id": i.id, - '学生姓名':i.stuname, - '学生班级':i.stuclass, - "公司": compname, + '学生姓名':i.sname, + '学生班级编号':i.class_num, + "公司": employment_company, "公司区域":somewhere, # "company_id": i.company_id, - "薪资":i.salary, + "薪资":i.employment_salary, # "address_id": i.address_id, - "就业开放时间":i.employment_open_date, - "offer下发时间":i.offer_date, - "created_date": i.created_date, - "updated_date": i.updated_date, - "is_deleted":i.is_deleted } for i,compname,somewhere in r ] #返回信息列表 + "就业开放时间":i.employment_open_time, + "offer下发时间":i.offer_recived_time, + "created_date": i.create_time, + "updated_date": i.update_time, + "is_deleted":i.is_deleted } for i,employment_company,somewhere in r ] #返回信息列表 def delete_emp_dao(id,db): #删除函数 diff --git a/stu_jiuye/database.py b/stu_jiuye/database.py index 230d3a7..b220e81 100644 --- a/stu_jiuye/database.py +++ b/stu_jiuye/database.py @@ -2,6 +2,7 @@ from sqlalchemy import * from sqlalchemy.orm import declarative_base,sessionmaker db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824_001?charset=utf8mb4" +# db_url = "mysql+pymysql://root:420821@localhost:3306/student_manage_system?charset=utf8mb4" engine = create_engine(db_url , pool_size=50 , echo=True diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 0e0779d..7ce7c94 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -38,8 +38,8 @@ class Employments(Base): #学生就 # , ForeignKey='student.id' , comment='自增主键' ) - stuname = Column(String(50)) #学生姓名,冗余字段 - stuclass = Column(String(50)) #学生班级,冗余字段 + sname = Column(String(50)) #学生姓名,冗余字段 + class_num = Column(Integer) #学生班级,冗余字段 # compname=Column(String(50) # ,nullable=False @@ -53,16 +53,16 @@ class Employments(Base): #学生就 # , ForeignKey('Address.id') # , nullable=False # ) - salary = Column(Integer) #薪资 + employment_salary = Column(Integer) #薪资 - employment_open_date = Column(DATETIME) #就业开放时间 + employment_open_time = Column(DATETIME) #就业开放时间 - offer_date = Column(DATETIME) #offer下发时间 + offer_recived_time = Column(DATETIME) #offer下发时间 - created_date = Column(DATETIME #创建数据时间 + create_time = Column(DATETIME #创建数据时间 , default=datetime.now ) - updated_date = Column(DATETIME #更新数据时间 + update_time = Column(DATETIME #更新数据时间 , default=datetime.now , onupdate=datetime.now ) @@ -74,7 +74,7 @@ class Company(Base): #公司信 , primary_key=True ,autoincrement=True ) #主键id,自增主键 - compname = Column(String(50) #公司姓名 + employment_company = Column(String(50) #公司姓名 , nullable=False #非空约束 ) address_id = Column(Integer #地址id,匹配地址表 diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 89acbbc..2f8fab2 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -4,14 +4,14 @@ from pydantic import BaseModel, Field class PostRequest(BaseModel): #学生就业信息请求体模型 # compname: str|None=None - stuname: str|None=None - stuclass: str|None=None + sname: str|None=None + class_num: int|None=None company_id:int|None=None # address_id: int|None=None - salary: int|None=None - employment_open_date:date|None=None - offer_date:date|None=None - updated_date:date|None=None + employment_salary: int|None=None + employment_open_time:date|None=None + offer_recived_time:date|None=None + create_time:date|None=None is_deleted:int=0 class EmpResponse(BaseModel): #学生就业信息响应体 code: int = 200 @@ -21,7 +21,7 @@ class EmpResponse(BaseModel): #学生就 class CompRequest(BaseModel): #公司信息请求体模型 - compname:str + employment_company:str address_id: int | None = None class CompResponse(BaseModel): #公司信息响应体 From 29dd7e1e047aa5aec6c8e6de3341b33d15e415ab Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Tue, 22 Sep 2026 10:48:49 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stu_jiuye/CURD_api.py | 33 ++++++++++++++++++++------------- stu_jiuye/dao.py | 3 +++ stu_jiuye/model.py | 6 +++--- stu_jiuye/request.py | 3 +-- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index 403a5c7..f01936c 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -7,7 +7,7 @@ from database import get_db CURD=APIRouter() -@CURD.get('/emp',tags=['查询就业信息']) +@CURD.get('/emp',summary='查询就业信息') def get_stuinfo( #查询学生就业信息 sname:str| None = None ,class_num:int| None = None @@ -34,7 +34,7 @@ def get_stuinfo( #查询学生就业信息 return r #成功返回 raise HTTPException(status_code=404, detail='名单不存在!') #失败返回错误信息 -@CURD.post('/emp',response_model=EmpResponse,tags=['新增就业信息']) +@CURD.post('/emp',response_model=EmpResponse,summary='新增就业信息') def add_stuinfo( #新增学生就业信息 p:PostRequest,db=Depends(get_db) ): #调用请求体 @@ -44,7 +44,7 @@ def add_stuinfo( #新增学生就业信 raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') #失败返回错误 return EmpResponse(totals=1, data=d) #成功返回响应体 -@CURD.post('/emp/company',response_model=CompResponse,tags=['新增公司信息']) +@CURD.post('/emp/company',response_model=CompResponse,summary='新增公司信息') def add_company( #新增公司表信息 c:CompRequest,db=Depends(get_db) ): @@ -55,7 +55,7 @@ def add_company( #新增公司表信息 return CompResponse(totals=1, data=d) #成功返回响应体 -@CURD.post('/emp/company/address',response_model=AddResponse,tags=['新增公司所在区域']) +@CURD.post('/emp/company/address',response_model=AddResponse,summary='新增公司所在区域') def add_address( #新增公司地址区域信息 add:AddRequest,db=Depends(get_db) ): @@ -66,7 +66,7 @@ def add_address( #新增公司地址区 return AddResponse(totals=1, data=d) #成功返回响应体 -@CURD.put('/emp',tags=['更改就业信息']) +@CURD.put('/emp',summary='更改就业信息') def updata_stuinfo( #更新数据模块 up:PostRequest ,id:int @@ -78,7 +78,7 @@ def updata_stuinfo( #更新数据模块 raise HTTPException(status_code=500, detail='没有更新!') #失败返回错误信息 return {'code': 200, 'totals': r, 'detail': '更新成功'} #成功返回信息 -@CURD.delete('/emp/{id}',tags=['删除就业信息']) +@CURD.delete('/emp/{id}',summary='删除就业信息') def delete_stuinfo( #删除模块 id:int ,db=Depends(get_db) @@ -89,7 +89,7 @@ def delete_stuinfo( #删除模块 return {'code': 200, 'totals': rows, 'detail': '删除成功'} #成功返回信息 -@CURD.get('/Top5',tags=['就业薪资Top5']) +@CURD.get('/Top5',summary='就业薪资Top5') def salarytop5(db=Depends(get_db)): q = db.query(Employments,Company.employment_company) \ .join(Company, Employments.company_id == Company.id) \ @@ -98,16 +98,23 @@ def salarytop5(db=Depends(get_db)): .offset(0).limit(5) .all() return [{'学生姓名':i.sname,'学生班级编号':i.class_num,'就业时间':i.offer_recived_time,'公司':employment_company} for i,employment_company in q] -@CURD.get('/worktime',tags=['学生就业时常']) +@CURD.get('/worktime',summary='学生就业时常') def worktime(db=Depends(get_db)): q = db.query(Employments).all() - return [{'学生姓名':i.stuname,'就业时常':f'{i.offer_recived_time-i.employment_open_time}'} for i in q] + return [{'学生姓名':i.sname,'就业时常':f'{i.offer_recived_time-i.employment_open_time}' if i.offer_recived_time and i.employment_open_time else '暂无数据'} for i in q] -@CURD.get('/avgworktime',tags=['学生平均就业时常']) -def worktime(db=Depends(get_db)): +@CURD.get('/avgworktime',summary='学生平均就业时常') +def avgworktime(db=Depends(get_db)): q = db.query(Employments)\ - .filter(Employments.employment_open_time is not None)\ + .filter(Employments.employment_open_time.isnot(None) + ,Employments.offer_recived_time.isnot(None))\ .all() - return [{'学生姓名':i.stuname,'平均就业时常':f'{(i.offer_recived_time-i.employment_open_time)/len(q)}'} for i in q] \ No newline at end of file + if not q: + return {'平均就业时常': '暂无数据'} + s=0 + for i in q: + s+=(i.offer_recived_time - i.employment_open_time) + avg=s/len(q) + return f'平均就业时常:{avg}' \ No newline at end of file diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 09196a1..2efedc6 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -6,6 +6,9 @@ def add_employment_dao(o,db): #新增就业信息函数 try: # r = db.query(Employments).filter(Employments.id == o['id'] ).all() # o.pop('id', None) #摘除id字段,自增字段无需手动添加 + o.pop('create_time', None) + o.pop('update_time', None) + o.pop('is_deleted', None) o1 = Employments( **o) #实例化参数 db.add(o1) #添加数据进入表 diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 7ce7c94..7479618 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -1,6 +1,6 @@ from sqlalchemy import ForeignKey -from database import DATETIME,Base,Column,Integer,String,engine +from database import DATETIME,Base,Column,Integer,String,DATE from datetime import datetime @@ -55,9 +55,9 @@ class Employments(Base): #学生就 # ) employment_salary = Column(Integer) #薪资 - employment_open_time = Column(DATETIME) #就业开放时间 + employment_open_time = Column(DATE) #就业开放时间 - offer_recived_time = Column(DATETIME) #offer下发时间 + offer_recived_time = Column(DATE) #offer下发时间 create_time = Column(DATETIME #创建数据时间 , default=datetime.now diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 2f8fab2..5b9c041 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -11,8 +11,7 @@ class PostRequest(BaseModel): #学生就 employment_salary: int|None=None employment_open_time:date|None=None offer_recived_time:date|None=None - create_time:date|None=None - is_deleted:int=0 + class EmpResponse(BaseModel): #学生就业信息响应体 code: int = 200 detail: str = 'OK' From 5ced78a009b34d3cdca4dbdd11d31a1de8eb4962 Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Tue, 22 Sep 2026 11:42:27 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stu_jiuye/CURD_api.py | 26 +++++++++++++++++--------- stu_jiuye/dao.py | 28 +++++++++++++++++----------- stu_jiuye/model.py | 8 ++++---- stu_jiuye/request.py | 2 +- 4 files changed, 39 insertions(+), 25 deletions(-) diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index f01936c..3aac5c5 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -73,9 +73,13 @@ def updata_stuinfo( #更新数据模块 ,db=Depends(get_db) ): #根据id选择对象 d = up.model_dump(exclude_unset=True) #解析 + d.pop('create_time', None) + d.pop('is_deleted', None) r = update_emp_dao(id=id, update_data=d, db=db) #调用更新函数 + if not d: + raise HTTPException(status_code=400, detail='没有需要更新的字段') if not r: - raise HTTPException(status_code=500, detail='没有更新!') #失败返回错误信息 + raise HTTPException(status_code=404, detail='未找到对应记录') #失败返回错误信息 return {'code': 200, 'totals': r, 'detail': '更新成功'} #成功返回信息 @CURD.delete('/emp/{id}',summary='删除就业信息') @@ -95,12 +99,14 @@ def salarytop5(db=Depends(get_db)): .join(Company, Employments.company_id == Company.id) \ .filter(Employments.is_deleted == 0)\ .order_by(Employments.employment_salary.desc())\ - .offset(0).limit(5) .all() + .limit(5) .all() return [{'学生姓名':i.sname,'学生班级编号':i.class_num,'就业时间':i.offer_recived_time,'公司':employment_company} for i,employment_company in q] @CURD.get('/worktime',summary='学生就业时常') def worktime(db=Depends(get_db)): - q = db.query(Employments).all() + q = db.query(Employments)\ + .filter(Employments.is_deleted==0)\ + .all() return [{'学生姓名':i.sname,'就业时常':f'{i.offer_recived_time-i.employment_open_time}' if i.offer_recived_time and i.employment_open_time else '暂无数据'} for i in q] @@ -109,12 +115,14 @@ def worktime(db=Depends(get_db)): def avgworktime(db=Depends(get_db)): q = db.query(Employments)\ .filter(Employments.employment_open_time.isnot(None) - ,Employments.offer_recived_time.isnot(None))\ + ,Employments.offer_recived_time.isnot(None) + ,Employments.is_deleted==0)\ .all() if not q: return {'平均就业时常': '暂无数据'} - s=0 - for i in q: - s+=(i.offer_recived_time - i.employment_open_time) - avg=s/len(q) - return f'平均就业时常:{avg}' \ No newline at end of file + total = sum((i.offer_recived_time - i.employment_open_time).total_seconds() for i in q) + avg_days=total /len(q)/86400 #一天86400秒 + return { + '人数': len(q), + '平均就业时常(天)': round(avg_days, 2) + } \ No newline at end of file diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 2efedc6..de1d9b4 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -23,6 +23,9 @@ def add_employment_dao(o,db): #新增就业信息函数 def add_company_dao(o,db): #添加公司信息函数 try: o.pop('id', None) #摘除id字段,自增字段无需手动添加 + o.pop('create_time', None) + o.pop('update_time', None) + o.pop('is_deleted', None) o1 = Company( **o) #实例化参数 db.add(o1) #添加数据进入表 except Exception as e: #失败返回 @@ -35,6 +38,9 @@ def add_company_dao(o,db): #添加公司信息函数 def add_address_dao(o,db): #添加地址区域信息函数 try: o.pop('id', None) #摘除id字段,自增字段无需手动添加 + o.pop('create_time', None) + o.pop('update_time', None) + o.pop('is_deleted', None) o1 = Address( **o) #实例化参数 db.add(o1) #添加数据进入表 except Exception as e: #失败返回 @@ -54,7 +60,7 @@ def update_emp_dao(id,update_data,db): #更新数据函数 except Exception as e: print(f'更新失败,{e}') #返回失败信息 db.rollback() #数据回滚 - return False + return 0 else: db.commit() #提交事务,永久保存 return rows @@ -75,8 +81,8 @@ def get_emp_dao( #获取学生 # ,page_size ): #根据选择条件获取信息 q = db.query(Employments,Company.employment_company,Address.somewhere)\ - .join(Company,Employments.company_id==Company.id)\ - .join(Address,Company.address_id==Address.id)\ + .outerjoin(Company,Employments.company_id==Company.id)\ + .outerjoin(Address,Company.address_id==Address.id)\ .filter(Employments.is_deleted == 0) #连接公司表和地址表,筛选未被删除信息 # if stuid: # q = q.filter( Employments.id == stuid ) @@ -103,22 +109,22 @@ def get_emp_dao( #获取学生 return [ {"id": i.id, '学生姓名':i.sname, '学生班级编号':i.class_num, - "公司": employment_company, - "公司区域":somewhere, + "公司": employment_company or '未就业', + "公司区域":somewhere or '-', # "company_id": i.company_id, - "薪资":i.employment_salary, + "薪资":i.employment_salary or '-', # "address_id": i.address_id, "就业开放时间":i.employment_open_time, - "offer下发时间":i.offer_recived_time, - "created_date": i.create_time, - "updated_date": i.update_time, - "is_deleted":i.is_deleted } for i,employment_company,somewhere in r ] #返回信息列表 + "offer下发时间":i.offer_recived_time or '-', + "创建时间": i.create_time, + "更新时间": i.update_time, + "是否删除":i.is_deleted } for i,employment_company,somewhere in r ] #返回信息列表 def delete_emp_dao(id,db): #删除函数 try: rows = db.query(Employments)\ - .filter(Employments.id == id)\ + .filter(Employments.id == id,Employments.is_deleted == 0)\ .update( {'is_deleted':1} ) #软删除,is_deleted返回1 except Exception as e: #失败返回信息 diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 7479618..26f9db3 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -46,18 +46,18 @@ class Employments(Base): #学生就 # ) company_id = Column(Integer #公司id,外键匹配公司表 , ForeignKey('Company.id') - , nullable=False + , nullable=True ) # address_id = Column(Integer # , ForeignKey('Address.id') # , nullable=False # ) - employment_salary = Column(Integer) #薪资 + employment_salary = Column(Integer, nullable=True) #薪资 - employment_open_time = Column(DATE) #就业开放时间 + employment_open_time = Column(DATE, nullable=True) #就业开放时间 - offer_recived_time = Column(DATE) #offer下发时间 + offer_recived_time = Column(DATE, nullable=True) #offer下发时间 create_time = Column(DATETIME #创建数据时间 , default=datetime.now diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 5b9c041..4161872 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -21,7 +21,7 @@ class EmpResponse(BaseModel): #学生就 class CompRequest(BaseModel): #公司信息请求体模型 employment_company:str - address_id: int | None = None + address_id: int class CompResponse(BaseModel): #公司信息响应体 code: int = 200 From 2cc3829c88ab5eeb8869728e099423e3bb688189 Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Tue, 22 Sep 2026 12:28:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0from=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stu_jiuye/CURD_api.py | 4 ++-- stu_jiuye/dao.py | 2 +- stu_jiuye/main.py | 6 +++--- stu_jiuye/model.py | 2 +- stu_jiuye/request.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index 3aac5c5..cc8c6b6 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -1,9 +1,9 @@ import datetime from fastapi import APIRouter,Depends,HTTPException -from dao import * +from stu_jiuye.dao import * from stu_jiuye.request import PostRequest, EmpResponse, AddRequest,AddResponse,CompRequest,CompResponse -from database import get_db +from stu_jiuye.database import get_db CURD=APIRouter() diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index de1d9b4..3dc4882 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -1,5 +1,5 @@ -from model import Employments,Address,Company +from stu_jiuye.model import Employments,Address,Company def add_employment_dao(o,db): #新增就业信息函数 diff --git a/stu_jiuye/main.py b/stu_jiuye/main.py index f1a1b49..f7edb73 100644 --- a/stu_jiuye/main.py +++ b/stu_jiuye/main.py @@ -1,7 +1,7 @@ from fastapi import FastAPI -from CURD_api import CURD -from database import Base,engine -import model +from stu_jiuye.CURD_api import CURD +from stu_jiuye.database import Base,engine +# import model app=FastAPI() Base.metadata.create_all(engine) app.include_router(CURD,tags=['就业管理系统']) diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 26f9db3..7d5c3e5 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -1,6 +1,6 @@ from sqlalchemy import ForeignKey -from database import DATETIME,Base,Column,Integer,String,DATE +from stu_jiuye.database import DATETIME,Base,Column,Integer,String,DATE from datetime import datetime diff --git a/stu_jiuye/request.py b/stu_jiuye/request.py index 4161872..789ffbb 100644 --- a/stu_jiuye/request.py +++ b/stu_jiuye/request.py @@ -1,5 +1,5 @@ from datetime import * -from pydantic import BaseModel, Field +from pydantic import BaseModel class PostRequest(BaseModel): #学生就业信息请求体模型