add .gitignore
This commit is contained in:
+16
@@ -1 +1,17 @@
|
|||||||
|
.venv/
|
||||||
|
.idea
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.pytest_cache/
|
||||||
|
.mypy_cache/
|
||||||
|
.ruff_cache/
|
||||||
|
tests/
|
||||||
|
.git/
|
||||||
|
.github/
|
||||||
|
*.md
|
||||||
|
!README.md
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
Dockerfile
|
||||||
|
|
||||||
__pycache__
|
__pycache__
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
python 3.13.4
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
'''
|
||||||
|
todo: 只定义dao method ?
|
||||||
|
'''
|
||||||
|
|
||||||
|
from fastapi import Depends
|
||||||
|
from model.order import Order, get_session, OrderResponse, OrderSchema
|
||||||
|
|
||||||
|
def get_order(id:int=None, user_id:int=None, title:str=None,session=None) -> OrderResponse:
|
||||||
|
q = session.query(Order)
|
||||||
|
if id: q = q.filter( Order.id == id )
|
||||||
|
if user_id: q = q.filter( Order.userid == user_id )
|
||||||
|
if title: q = q.where(Order.title.like('%'+title+'%'))
|
||||||
|
res = q.all()
|
||||||
|
# return {"data":OrderSchema(many=True).dump(q,many=True)}
|
||||||
|
# return {"data":[OrderSchema.model_validate(o) for o in r]}
|
||||||
|
return {"data":[{"order_id":r.id,'order_title':r.title,"user_id":r.userid,"create_date":r.create_date,"update_date":r.update_date} for r in res]}
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ from fastapi.middleware.cors import CORSMiddleware
|
|||||||
from starlette.staticfiles import StaticFiles
|
from starlette.staticfiles import StaticFiles
|
||||||
from router.features import form, method, file, validation, mimetype, path_query_variables, json
|
from router.features import form, method, file, validation, mimetype, path_query_variables, json
|
||||||
|
|
||||||
from router.dbopt import mysql,order
|
from router.dbopt import mysql,order_route
|
||||||
|
|
||||||
from router.workhome import wk_0915,wk_0916,wk_0917
|
from router.workhome import wk_0915,wk_0916,wk_0917
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ app.include_router(json.route)
|
|||||||
|
|
||||||
|
|
||||||
app.include_router(mysql.route)
|
app.include_router(mysql.route)
|
||||||
app.include_router(order.route)
|
app.include_router(order_route.route)
|
||||||
|
|
||||||
# homeworks...
|
# homeworks...
|
||||||
app.include_router(wk_0915.route)
|
app.include_router(wk_0915.route)
|
||||||
|
|||||||
+28
-18
@@ -1,8 +1,6 @@
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from sqlalchemy.orm import declarative_base,sessionmaker
|
from sqlalchemy.orm import declarative_base,sessionmaker
|
||||||
from sqlalchemy import Column, Integer,String,DATETIME,create_engine
|
from sqlalchemy import Column, Integer,String,DATETIME,create_engine
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
db_url = "mysql+pymysql://geeker:geeker@127.0.0.1:3306/fastapi_tutor?charset=utf8mb4"
|
db_url = "mysql+pymysql://geeker:geeker@127.0.0.1:3306/fastapi_tutor?charset=utf8mb4"
|
||||||
@@ -16,22 +14,6 @@ def get_session():
|
|||||||
)
|
)
|
||||||
yield Session()
|
yield Session()
|
||||||
|
|
||||||
# 定义创建订单的请求体模型
|
|
||||||
class OrderRequest(BaseModel):
|
|
||||||
id:int|None = None
|
|
||||||
title:str|None = None
|
|
||||||
userid:int|None =None
|
|
||||||
|
|
||||||
class OrderResponse(BaseModel):
|
|
||||||
id:int|None = None
|
|
||||||
title:str|None = None
|
|
||||||
userid:int|None =None
|
|
||||||
create_date:datetime|None = datetime.now()
|
|
||||||
update_date:datetime|None = datetime.now()
|
|
||||||
status_code:str|None = 200
|
|
||||||
detail:str|None = 'succeed!'
|
|
||||||
|
|
||||||
|
|
||||||
Base = declarative_base() # 执行函数,返回一个基类
|
Base = declarative_base() # 执行函数,返回一个基类
|
||||||
class Order(Base): # python里的表名字
|
class Order(Base): # python里的表名字
|
||||||
__tablename__ = 'order_info_detail' # 实际数据库的表名字
|
__tablename__ = 'order_info_detail' # 实际数据库的表名字
|
||||||
@@ -53,4 +35,32 @@ class Order(Base): # python里的表名字
|
|||||||
, default=datetime.now # 首次创建的时间跟更新时间一致
|
, default=datetime.now # 首次创建的时间跟更新时间一致
|
||||||
, onupdate=datetime.now
|
, onupdate=datetime.now
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# 定义创建订单的请求体模型
|
||||||
|
class OrderRequest(BaseModel):
|
||||||
|
id:int|None = None
|
||||||
|
title:str|None = None
|
||||||
|
userid:int|None =None
|
||||||
|
|
||||||
|
# todo 序列化问题: Order - Base 无法直接序列
|
||||||
|
class OrderSchema(BaseModel):
|
||||||
|
id:int
|
||||||
|
title:str
|
||||||
|
userid:int
|
||||||
|
create_date:datetime
|
||||||
|
update_date:datetime
|
||||||
|
|
||||||
|
class OrderResponse(BaseModel):
|
||||||
|
# id:int|None = None
|
||||||
|
# title:str|None = None
|
||||||
|
# userid:int|None =None
|
||||||
|
# create_date:datetime|None = datetime.now()
|
||||||
|
# update_date:datetime|None = datetime.now()
|
||||||
|
status_code:str = 200
|
||||||
|
detail:str = 'succeed!'
|
||||||
|
total:int = 1
|
||||||
|
# data:str|dict|list[OrderSchema] # 响应数据
|
||||||
|
data:str|dict|list[object] # 响应数据
|
||||||
|
|
||||||
|
|
||||||
Order.__table__.create(engine,checkfirst = True)
|
Order.__table__.create(engine,checkfirst = True)
|
||||||
|
|||||||
@@ -7,25 +7,34 @@ from pydantic import BaseModel
|
|||||||
|
|
||||||
from model.order import OrderRequest,Order,get_session,OrderResponse
|
from model.order import OrderRequest,Order,get_session,OrderResponse
|
||||||
|
|
||||||
|
from dao.order_dao import get_order
|
||||||
|
|
||||||
route = APIRouter(prefix="/order",tags=["orders"])
|
route = APIRouter(prefix="/order",tags=["orders"])
|
||||||
|
|
||||||
# 模糊查询
|
# 模糊查询
|
||||||
@route.get('/',response_model=list[OrderResponse])
|
@route.get('/',response_model=OrderResponse)
|
||||||
|
def orders(id:int=None, user_id:int=None, title:str=None,session=Depends(get_session)):
|
||||||
|
return get_order(id,user_id,title,session)
|
||||||
|
|
||||||
|
# todo 请求响应模型序列化Order类问题
|
||||||
|
@route.get('/no_response_model')
|
||||||
def orders(id:int=None, user_id:int=None, title:str=None,session=Depends(get_session)):
|
def orders(id:int=None, user_id:int=None, title:str=None,session=Depends(get_session)):
|
||||||
q = session.query(Order)
|
q = session.query(Order)
|
||||||
if id: q = q.filter( Order.id == id )
|
if id: q = q.filter(Order.id == id)
|
||||||
if user_id: q = q.filter( Order.userid == userid )
|
if user_id: q = q.filter(Order.userid == user_id)
|
||||||
if title: q = q.where(Order.title.like('%'+title+'%'))
|
if title: q = q.where(Order.title.like('%' + title + '%'))
|
||||||
r = q.all()
|
res = q.all()
|
||||||
session.close()
|
return res
|
||||||
return r
|
|
||||||
|
|
||||||
|
|
||||||
@route.get('/{id}',response_model=OrderResponse)
|
@route.get('/{id}',response_model=OrderResponse)
|
||||||
def orders(id:int):
|
def orders(id:int,session=Depends(get_session)):
|
||||||
session = Session()
|
r = session.query(Order).filter( Order.id == id ).first()
|
||||||
r = session.query(Order).filter( Order.id == id ).all()
|
|
||||||
session.close()
|
session.close()
|
||||||
return [ {"order_id":i.id,'order_title':i.title,"user_id":i.userid,"create_date":i.create_date,"update_date":i.update_date} for i in r]
|
return {"data":
|
||||||
|
{"order_id":r.id,'order_title':r.title,"user_id":r.userid,"create_date":r.create_date,"update_date":r.update_date}
|
||||||
|
}
|
||||||
|
|
||||||
@route.delete('/',response_model=OrderResponse)
|
@route.delete('/',response_model=OrderResponse)
|
||||||
def orders(session=Depends(get_session)):
|
def orders(session=Depends(get_session)):
|
||||||
@@ -44,8 +53,7 @@ def orders(order:OrderRequest,session=Depends(get_session)):
|
|||||||
|
|
||||||
@route.put('/{id}',response_model=OrderResponse)
|
@route.put('/{id}',response_model=OrderResponse)
|
||||||
def orders(order:OrderRequest,id:int,session=Depends(get_session)):
|
def orders(order:OrderRequest,id:int,session=Depends(get_session)):
|
||||||
session.query( Order ).filter( Order.id == id ).update( order.model_dump(exclude_unset=True) )
|
r = session.query( Order ).filter( Order.id == id ).update( order.model_dump(exclude_unset=True) )
|
||||||
session.commit()
|
session.commit()
|
||||||
res = session.query(Order).filter(Order.id == id).first()
|
|
||||||
session.close()
|
session.close()
|
||||||
return res
|
return OrderResponse(status_code='200',detail='ok',total=r)
|
||||||
Reference in New Issue
Block a user