第三次提交,更新完善表连接,新增公司表和地址表
This commit is contained in:
+25
-5
@@ -2,12 +2,12 @@ import datetime
|
||||
|
||||
from fastapi import APIRouter,Depends,HTTPException
|
||||
from dao import *
|
||||
from stu_jiuye.request import PostRequest,EmpResponse
|
||||
from stu_jiuye.request import PostRequest, EmpResponse, AddRequest,AddResponse,CompRequest,CompResponse
|
||||
from database import get_db
|
||||
CURD=APIRouter()
|
||||
|
||||
|
||||
@CURD.get('/emp')
|
||||
@CURD.get('/emp',tags=['查询就业信息'])
|
||||
def get_stuinfo(
|
||||
# stuid:int|None=None,
|
||||
comname:str|None=None
|
||||
@@ -25,7 +25,7 @@ def get_stuinfo(
|
||||
return r
|
||||
raise HTTPException(status_code=404, detail='名单不存在!')
|
||||
|
||||
@CURD.post('/emp',response_model=EmpResponse)
|
||||
@CURD.post('/emp',response_model=EmpResponse,tags=['新增就业信息'])
|
||||
def add_stuinfo(
|
||||
p:PostRequest,db=Depends(get_db)
|
||||
):
|
||||
@@ -35,7 +35,27 @@ def add_stuinfo(
|
||||
raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!')
|
||||
return EmpResponse(totals=1, data=d)
|
||||
|
||||
@CURD.put('/emp')
|
||||
@CURD.post('/emp/company',response_model=CompResponse,tags=['新增公司信息'])
|
||||
def add_company(c:CompRequest,db=Depends(get_db)):
|
||||
d = c.model_dump()
|
||||
r = add_company_dao(o=d, db=db)
|
||||
if not r:
|
||||
raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!')
|
||||
return EmpResponse(totals=1, data=d)
|
||||
|
||||
|
||||
@CURD.post('/emp/company/address',response_model=AddResponse,tags=['新增公司所在区域'])
|
||||
def add_address(
|
||||
add:AddRequest,db=Depends(get_db)
|
||||
):
|
||||
d = add.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',tags=['更改就业信息'])
|
||||
def updata_stuinfo(company:PostRequest
|
||||
,id:int
|
||||
,db=Depends(get_db)
|
||||
@@ -46,7 +66,7 @@ def updata_stuinfo(company:PostRequest
|
||||
raise HTTPException(status_code=500, detail='没有更新!')
|
||||
return {'code': 200, 'totals': r, 'detail': '更新成功'}
|
||||
|
||||
@CURD.delete('/emp')
|
||||
@CURD.delete('/emp',tags=['删除就业信息'])
|
||||
def delete_stuinfo(id:int
|
||||
,db=Depends(get_db)):
|
||||
rows = delete_orders_dao(id, db)
|
||||
|
||||
+30
-2
@@ -1,4 +1,4 @@
|
||||
from model import Employments,Address
|
||||
from model import Employments,Address,Company
|
||||
|
||||
|
||||
def add_employment_dao(o,db):
|
||||
@@ -16,6 +16,30 @@ def add_employment_dao(o,db):
|
||||
db.commit()
|
||||
return True
|
||||
|
||||
def add_company_dao(o,db):
|
||||
try:
|
||||
o.pop('id', None)
|
||||
o1 = Company( **o)
|
||||
db.add(o1)
|
||||
except Exception as e:
|
||||
print(f'添加失败,{e}')
|
||||
db.rollback()
|
||||
return False
|
||||
else:
|
||||
db.commit()
|
||||
return True
|
||||
def add_address_dao(o,db):
|
||||
try:
|
||||
o.pop('id', None)
|
||||
o1 = Address( **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):
|
||||
@@ -37,9 +61,12 @@ def get_orders_dao(
|
||||
# ,page
|
||||
# ,page_size
|
||||
):
|
||||
q = db.query(Employments)
|
||||
q = db.query(Employments)\
|
||||
.join(Company,Employments.company_id==Company.id)\
|
||||
.join(Address,Company.address_id==Address.id)
|
||||
# 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()
|
||||
@@ -53,6 +80,7 @@ def get_orders_dao(
|
||||
'stuname':i.stuname,
|
||||
'stuclass':i.stuclass,
|
||||
"company_name": i.compname,
|
||||
"company_id": i.company_id,
|
||||
"salary":i.salary,
|
||||
"address_id": i.address_id,
|
||||
"employment_open_date":i.employment_open_date,
|
||||
|
||||
@@ -2,7 +2,10 @@ 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)
|
||||
engine = create_engine(db_url
|
||||
, pool_size=50
|
||||
, echo=True
|
||||
)
|
||||
|
||||
Base = declarative_base()
|
||||
Session = sessionmaker(bind=engine
|
||||
|
||||
+36
-12
@@ -4,7 +4,6 @@ from database import DATETIME,Base,Column,Integer,String,engine
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
|
||||
# class Student(Base):
|
||||
# __tablename__ = 'Student'
|
||||
# id = Column(Integer
|
||||
@@ -13,19 +12,15 @@ from datetime import datetime
|
||||
# # 外键
|
||||
# ,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
|
||||
# )
|
||||
@@ -47,11 +42,12 @@ class Employments(Base):
|
||||
stuclass = Column(String(50))
|
||||
|
||||
compname=Column(String(50)
|
||||
,nullable=False
|
||||
,nullable=False
|
||||
)
|
||||
address_id=Column(Integer
|
||||
,nullable=False
|
||||
)
|
||||
company_id = Column(Integer
|
||||
, nullable=False
|
||||
|
||||
)
|
||||
|
||||
salary = Column(Integer)
|
||||
|
||||
@@ -67,15 +63,43 @@ class Employments(Base):
|
||||
, onupdate=datetime.now
|
||||
)
|
||||
is_deleted = Column(Integer, default=0)
|
||||
|
||||
class Company(Base):
|
||||
__tablename__ = 'Company'
|
||||
id = Column(Integer
|
||||
, ForeignKey('Employments.company_id')
|
||||
, primary_key=True
|
||||
|
||||
)
|
||||
compname = Column(String(50), nullable=False)
|
||||
address_id = Column(Integer
|
||||
, nullable=False
|
||||
)
|
||||
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
|
||||
, ForeignKey('Company.address_id')
|
||||
, primary_key=True
|
||||
, autoincrement=True
|
||||
# , ForeignKey='company.id'
|
||||
, comment='自增主键'
|
||||
|
||||
)
|
||||
somewhere=Column(String(50)
|
||||
, nullable=False
|
||||
)
|
||||
created_date = Column(DATETIME
|
||||
, default=datetime.now
|
||||
)
|
||||
updated_date = Column(DATETIME
|
||||
, default=datetime.now
|
||||
, onupdate=datetime.now
|
||||
)
|
||||
is_deleted = Column(Integer, default=0)
|
||||
|
||||
|
||||
+23
-2
@@ -14,7 +14,6 @@ class PostRequest(BaseModel):
|
||||
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'
|
||||
@@ -22,6 +21,28 @@ class EmpResponse(BaseModel):
|
||||
data: str | dict | tuple | list
|
||||
|
||||
|
||||
class CompRequest(BaseModel):
|
||||
compname:str|None=None
|
||||
created_date: datetime = Field(default_factory=datetime.now)
|
||||
updated_date: datetime = Field(default_factory=datetime.now)
|
||||
is_deleted: bool = False
|
||||
class CompResponse(BaseModel):
|
||||
code: int = 200
|
||||
detail: str = 'OK'
|
||||
totals: int = 0
|
||||
data: str | dict | tuple | list
|
||||
|
||||
class AddRequest(BaseModel):
|
||||
somewhere:str|None=None
|
||||
created_date: datetime = Field(default_factory=datetime.now)
|
||||
updated_date: datetime = Field(default_factory=datetime.now)
|
||||
is_deleted: bool = False
|
||||
class AddResponse(BaseModel):
|
||||
code: int = 200
|
||||
detail: str = 'OK'
|
||||
totals: int = 0
|
||||
data: str | dict | tuple | list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user