第二次提交
This commit is contained in:
@@ -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': '删除成功'}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user