From fb94d03bb6fb5c323d8c88b0132a942b5adb4d19 Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Tue, 22 Sep 2026 13:34:34 +0800 Subject: [PATCH 1/2] =?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 --- .env | 0 pyproject.toml | 1 + stu_jiuye/database.py | 20 ++++++++++++++++++-- stu_jiuye/main.py | 4 +++- uv.lock | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 760670a..4b2f5d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ dependencies = [ "like>=1.7.1", "pip>=26.2.1", "pymysql>=1.2.3", + "python-dotenv>=1.2.3", "sqlalchemy>=2.0.54", "uvicorn>=0.53.0", ] diff --git a/stu_jiuye/database.py b/stu_jiuye/database.py index b220e81..7852f3e 100644 --- a/stu_jiuye/database.py +++ b/stu_jiuye/database.py @@ -1,8 +1,24 @@ +# 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" + 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" +# 导入.env参数 +import os +from dotenv import load_dotenv +load_dotenv( ) +DB_USER = os.getenv("DB_USER", "root") +DB_PASSWORD = os.getenv("DB_PASSWORD", "") +DB_HOST = os.getenv("DB_HOST", "localhost") +DB_PORT = os.getenv("DB_PORT", "3306") +DB_NAME = os.getenv("DB_NAME", "student_manage_system") + +db_url = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8mb4" + engine = create_engine(db_url , pool_size=50 , echo=True diff --git a/stu_jiuye/main.py b/stu_jiuye/main.py index f7edb73..768fbf4 100644 --- a/stu_jiuye/main.py +++ b/stu_jiuye/main.py @@ -1,7 +1,9 @@ -from fastapi import FastAPI +from fastapi import FastAPI,APIRouter from stu_jiuye.CURD_api import CURD from stu_jiuye.database import Base,engine # import model +Shtudent_Jiuye = APIRouter() + app=FastAPI() Base.metadata.create_all(engine) app.include_router(CURD,tags=['就业管理系统']) diff --git a/uv.lock b/uv.lock index 9fc0636..3318002 100644 --- a/uv.lock +++ b/uv.lock @@ -851,6 +851,7 @@ dependencies = [ { name = "like" }, { name = "pip" }, { name = "pymysql" }, + { name = "python-dotenv" }, { name = "sqlalchemy" }, { name = "uvicorn" }, ] @@ -861,6 +862,7 @@ requires-dist = [ { name = "like", specifier = ">=1.7.1" }, { name = "pip", specifier = ">=26.2.1" }, { name = "pymysql", specifier = ">=1.2.3" }, + { name = "python-dotenv", specifier = ">=1.2.3" }, { name = "sqlalchemy", specifier = ">=2.0.54" }, { name = "uvicorn", specifier = ">=0.53.0" }, ] From a6b1e3b0de68b4d624d36ed90a6aa3d3babd1124 Mon Sep 17 00:00:00 2001 From: yb <739325183@qq.com> Date: Tue, 22 Sep 2026 15:19:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stu_jiuye/CURD_api.py | 28 ++++++++++++++++------------ stu_jiuye/dao.py | 30 +++++++++++++++++++----------- stu_jiuye/main.py | 2 +- stu_jiuye/model.py | 41 ++++++++++------------------------------- 4 files changed, 46 insertions(+), 55 deletions(-) diff --git a/stu_jiuye/CURD_api.py b/stu_jiuye/CURD_api.py index cc8c6b6..e35592e 100644 --- a/stu_jiuye/CURD_api.py +++ b/stu_jiuye/CURD_api.py @@ -1,6 +1,6 @@ import datetime -from fastapi import APIRouter,Depends,HTTPException +from fastapi import APIRouter,Depends,HTTPException,Query from stu_jiuye.dao import * from stu_jiuye.request import PostRequest, EmpResponse, AddRequest,AddResponse,CompRequest,CompResponse from stu_jiuye.database import get_db @@ -9,14 +9,16 @@ CURD=APIRouter() @CURD.get('/emp',summary='查询就业信息') def get_stuinfo( #查询学生就业信息 - 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_time:datetime.date|None=None - ,offer_recived_time:datetime.date|None=None + sname:str| None = Query(None,description='学生姓名') + ,class_num:int| None = Query(None,description='班级编号') + ,employment_company:str|None=Query(None,description='公司名称') + ,min_salary:int|None=Query(None,description='最小薪资范围') + ,max_salary:int|None=Query(None,description='最大薪资范围') + ,somewhere:str|None=Query(None,description='公司地区') + ,employment_open_start: datetime.date | None = Query(None,description='就业开放起始时间') + ,employment_open_end: datetime.date | None = Query(None,description='就业开放结束时间') + ,offer_recived_start: datetime.date | None = Query(None,description='offer下发起始时间') + ,offer_recived_end: datetime.date | None = Query(None,description='offer下发结束时间') ,db=Depends(get_db) ): #查询条件 r=get_emp_dao( #调用函数 @@ -26,8 +28,10 @@ def get_stuinfo( #查询学生就业信息 min_salary, max_salary, somewhere, - employment_open_time, - offer_recived_time, + employment_open_start, + employment_open_end, + offer_recived_start, + offer_recived_end, db ) if r: @@ -75,9 +79,9 @@ def updata_stuinfo( #更新数据模块 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='没有需要更新的字段') + r = update_emp_dao(id=id, update_data=d, db=db) #调用更新函数 if not r: raise HTTPException(status_code=404, detail='未找到对应记录') #失败返回错误信息 return {'code': 200, 'totals': r, 'detail': '更新成功'} #成功返回信息 diff --git a/stu_jiuye/dao.py b/stu_jiuye/dao.py index 3dc4882..d62840f 100644 --- a/stu_jiuye/dao.py +++ b/stu_jiuye/dao.py @@ -73,8 +73,10 @@ def get_emp_dao( #获取学生 ,min_salary ,max_salary ,somewhere - ,employment_open_time - ,offer_recived_time + ,employment_open_start + ,employment_open_end + ,offer_recived_start + ,offer_recived_end ,db # ,page @@ -100,10 +102,15 @@ def get_emp_dao( #获取学生 q = q.filter(Employments.employment_salary >= min_salary) if max_salary is not None: ##根据最大薪资筛选 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) + if employment_open_start: + q = q.filter(Employments.employment_open_time >= employment_open_start) + if employment_open_end: + q = q.filter(Employments.employment_open_time <= employment_open_end) + if offer_recived_start: + q = q.filter(Employments.offer_recived_time >= offer_recived_start) + if offer_recived_end: + q = q.filter(Employments.offer_recived_time <= offer_recived_end) + r= q.all() if r: return [ {"id": i.id, @@ -114,11 +121,12 @@ def get_emp_dao( #获取学生 # "company_id": i.company_id, "薪资":i.employment_salary or '-', # "address_id": i.address_id, - "就业开放时间":i.employment_open_time, - "offer下发时间":i.offer_recived_time or '-', - "创建时间": i.create_time, - "更新时间": i.update_time, - "是否删除":i.is_deleted } for i,employment_company,somewhere in r ] #返回信息列表 + "就业开放时间":i.employment_open_time.strftime('%Y-%m-%d') , + "offer下发时间":i.offer_recived_time.strftime('%Y-%m-%d') + # , "创建时间": i.create_time, + # "更新时间": i.update_time, + # "是否删除":i.is_deleted + } for i,employment_company,somewhere in r ] #返回信息列表 def delete_emp_dao(id,db): #删除函数 diff --git a/stu_jiuye/main.py b/stu_jiuye/main.py index 768fbf4..096b4c2 100644 --- a/stu_jiuye/main.py +++ b/stu_jiuye/main.py @@ -1,7 +1,7 @@ from fastapi import FastAPI,APIRouter from stu_jiuye.CURD_api import CURD from stu_jiuye.database import Base,engine -# import model +import stu_jiuye.model Shtudent_Jiuye = APIRouter() app=FastAPI() diff --git a/stu_jiuye/model.py b/stu_jiuye/model.py index 7d5c3e5..e5bb599 100644 --- a/stu_jiuye/model.py +++ b/stu_jiuye/model.py @@ -4,31 +4,6 @@ from stu_jiuye.database import DATETIME,Base,Column,Integer,String,DATE from datetime import datetime -# class Student(Base): -# __tablename__ = 'Student' -# id = Column(Integer -# , primary_key=True -# , autoincrement=True -# # 外键 -# ,comment='自增主键' -# ) -# stuname = Column(String(50) -# ,nullable=False -# ) -# stuid=Column(Integer -# ,nullable=False -# ) -# stuclass=Column(String(50) -# ,nullable=False -# ) -# created_date = Column(DATETIME -# ,default=datetime.now -# ) -# updated_date = Column(DATETIME -# ,default=datetime.now -# ,onupdate=datetime.now -# ) - class Employments(Base): #学生就业信息基类 __tablename__ = 'Employments' #表名 @@ -38,8 +13,12 @@ class Employments(Base): #学生就 # , ForeignKey='student.id' , comment='自增主键' ) - sname = Column(String(50)) #学生姓名,冗余字段 - class_num = Column(Integer) #学生班级,冗余字段 + sname = Column(String(50) + # , ForeignKey='student.name' + ) #学生姓名,冗余字段 + class_num = Column(Integer + # , ForeignKey='class.id' + ) #学生班级,冗余字段 # compname=Column(String(50) # ,nullable=False @@ -81,10 +60,10 @@ class Company(Base): #公司信 , ForeignKey('Address.id') #外键地址表id , nullable=False #非空约束 ) - 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 ) @@ -99,10 +78,10 @@ class Address(Base): somewhere=Column(String(50) #地址区域 , nullable=False ) - 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 )