第二次提交

This commit is contained in:
2026-09-20 21:20:12 +08:00
parent 55252780e2
commit 53a48e0b21
7 changed files with 277 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
import datetime
from fastapi import APIRouter,Depends,HTTPException
from dao import *
from stu_jiuye.request import PostRequest,EmpResponse
from database import get_db
CURD=APIRouter()
@CURD.get('/emp')
def get_stuinfo(
# stuid:int|None=None,
comname:str|None=None
,min_salary:int=0
,max_salary:int|None=None
,db=Depends(get_db)
):
r=get_orders_dao(
# stuid,
comname,
db,
min_salary,
max_salary)
if r:
return r
raise HTTPException(status_code=404, detail='名单不存在!')
@CURD.post('/emp',response_model=EmpResponse)
def add_stuinfo(
p:PostRequest,db=Depends(get_db)
):
d=p.model_dump()
r=add_employment_dao(o=d,db=db)
if not r:
raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!')
return EmpResponse(totals=1, data=d)
@CURD.put('/emp')
def updata_stuinfo(company:PostRequest
,id:int
,db=Depends(get_db)
):
d = company.model_dump(exclude_unset=True)
r = update_orders_dao(id=id, update_data=d, db=db)
if not r:
raise HTTPException(status_code=500, detail='没有更新!')
return {'code': 200, 'totals': r, 'detail': '更新成功'}
@CURD.delete('/emp')
def delete_stuinfo(id:int
,db=Depends(get_db)):
rows = delete_orders_dao(id, db)
if not rows:
raise HTTPException(status_code=500, detail='没有删除!')
return {'code': 200, 'totals': rows, 'detail': '删除成功'}
+74
View File
@@ -0,0 +1,74 @@
from model import Employments,Address
def add_employment_dao(o,db):
try:
# r = db.query(Employments).filter(Employments.id == o['id'] ).all()
o.pop('id', None)
o1 = Employments( **o)
db.add(o1)
except Exception as e:
print(f'添加失败,{e}')
db.rollback()
return False
else:
db.commit()
return True
def update_orders_dao(id,update_data,db):
try: # 数据更新是有返回值的,返回的是影响的行数
rows = db.query( Employments ).filter( Employments.id == id ).update( update_data )
except:
db.rollback()
return False
else:
db.commit()
return rows
def get_orders_dao(
# stuid,
name
,db
, min_salary: int = 0
, max_salary: int | None = None
# ,page
# ,page_size
):
q = db.query(Employments)
# if stuid:
# q = q.filter( Employments.id == stuid )
if name:
q = q.filter( Employments.stuname == name )
# r = q.offset( (page-1)*page_size ).limit( page_size ).all()
if min_salary is not None:
q = q.filter(Employments.salary >= min_salary)
if max_salary is not None:
q = q.filter(Employments.salary <= max_salary)
r= q.all()
if r:
return [ {"id": i.id,
'stuname':i.stuname,
'stuclass':i.stuclass,
"company_name": i.compname,
"salary":i.salary,
"address_id": i.address_id,
"employment_open_date":i.employment_open_date,
"offer_date":i.offer_date,
"created_date": i.created_date,
"updated_date": i.updated_date,
"is_deleted":i.is_deleted } for i in r ]
def delete_orders_dao(id,db):
try: # 删除有返回值,删除的行数
rows = db.query(Employments).filter(Employments.id == id).delete()
except Exception as e:
print(f'删除失败,{e}')
db.rollback()
rows = 0
else:
db.commit()
return rows
+21
View File
@@ -0,0 +1,21 @@
from sqlalchemy import *
from sqlalchemy.orm import declarative_base,sessionmaker
db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4"
engine = create_engine(db_url)
Base = declarative_base()
Session = sessionmaker(bind=engine
,autoflush=False
,autocommit = False
)
def get_db():
db = Session()
try:
yield db
finally:
db.close()
+15
View File
@@ -0,0 +1,15 @@
from fastapi import FastAPI
from CURD_api import CURD
from database import Base,engine
import model
app=FastAPI()
Base.metadata.create_all(engine)
app.include_router(CURD,tags=['就业管理系统'],prefix='/employment')
if __name__=='__main__':
import uvicorn
uvicorn.run('main:app', host='127.0.0.1', port=12395)
+81
View File
@@ -0,0 +1,81 @@
from sqlalchemy import ForeignKey
from database import DATETIME,Base,Column,Integer,String,engine
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'
id = Column(Integer
, primary_key=True
, autoincrement=True
# , ForeignKey='student.id'
, comment='自增主键'
)
stuname = Column(String(50))
stuclass = Column(String(50))
compname=Column(String(50)
,nullable=False
)
address_id=Column(Integer
,nullable=False
)
salary = Column(Integer)
employment_open_date = Column(DATETIME)
offer_date = Column(DATETIME)
created_date = Column(DATETIME
, default=datetime.now
)
updated_date = Column(DATETIME
, default=datetime.now
, onupdate=datetime.now
)
is_deleted = Column(Integer, default=0)
class Address(Base):
__tablename__ = 'address'
id = Column(Integer
, primary_key=True
, autoincrement=True
# , ForeignKey='company.id'
, comment='自增主键'
)
somewhere=Column(String(50)
, nullable=False
)
+27
View File
@@ -0,0 +1,27 @@
from datetime import *
from pydantic import BaseModel, Field
class PostRequest(BaseModel):
compname: str|None=None
stuname: str|None=None
stuclass: str|None=None
address_id: int|None=None
salary: int|None=None
employment_open_date:date|None=None
offer_date:date|None=None
created_date: datetime=Field(default_factory=datetime.now)
updated_date: datetime=Field(default_factory=datetime.now)
is_deleted: bool = False
class EmpResponse(BaseModel):
code: int = 200
detail: str = 'OK'
totals: int = 0
data: str | dict | tuple | list
View File