12
This commit is contained in:
Generated
+5
@@ -0,0 +1,5 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
Generated
+1
@@ -0,0 +1 @@
|
||||
Welcome
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="dataSourceStorageLocal" created-in="PY-253.30387.127">
|
||||
<data-source name="@localhost" uuid="1e98505f-6f67-46d1-b5b0-72da8b1a8e3f">
|
||||
<database-info product="MySQL" version="8.0.27" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-j-9.7.0 (Revision: 0aade1f13bcc98faf7dda5c02e782481eb291f62)" dbms="MYSQL" exact-version="8.0.27" exact-driver-version="9.7">
|
||||
<extra-name-characters>$</extra-name-characters>
|
||||
<identifier-quote-string>`</identifier-quote-string>
|
||||
</database-info>
|
||||
<case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<user-name>root</user-name>
|
||||
<schema-mapping>
|
||||
<introspection-scope>
|
||||
<node kind="schema" negative="1" />
|
||||
</introspection-scope>
|
||||
</schema-mapping>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="@localhost" uuid="1e98505f-6f67-46d1-b5b0-72da8b1a8e3f">
|
||||
<driver-ref>mysql.8</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
+24490
File diff suppressed because it is too large
Load Diff
+2
@@ -0,0 +1,2 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
BIN
Binary file not shown.
+2
@@ -0,0 +1,2 @@
|
||||
#n:mysql
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#n:performance_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#n:sys
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourcePerFileMappings">
|
||||
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/1e98505f-6f67-46d1-b5b0-72da8b1a8e3f/console.sql" value="1e98505f-6f67-46d1-b5b0-72da8b1a8e3f" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.13 (PyCharmMiscProject)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="ai0824" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/PyCharmMiscProject.iml" filepath="$PROJECT_DIR$/.idea/PyCharmMiscProject.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
'''
|
||||
__all__ = [a,b,c]
|
||||
决定对谁使用
|
||||
|
||||
__name__
|
||||
|
||||
异常处理的结构
|
||||
|
||||
异常处理的作用
|
||||
|
||||
私有属性
|
||||
|
||||
受保护的属性
|
||||
|
||||
类方法
|
||||
|
||||
静态方法
|
||||
|
||||
抽象类
|
||||
|
||||
抽象方法
|
||||
|
||||
魔法方法
|
||||
|
||||
闭包
|
||||
|
||||
装饰器
|
||||
|
||||
迭代器
|
||||
|
||||
生成器
|
||||
|
||||
日志
|
||||
|
||||
|
||||
'''
|
||||
@@ -0,0 +1,89 @@
|
||||
# 使用orm结合fastapi接口对数据库的订单表进行增删改查
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import declarative_base,sessionmaker
|
||||
from datetime import datetime
|
||||
from pydantic import BaseModel
|
||||
from fastapi import FastAPI,Form
|
||||
# ① 连接数据库,定义数据库表模型,以及数据库会话工具
|
||||
db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4"
|
||||
engine = create_engine(db_url
|
||||
,echo=True
|
||||
,pool_size=50
|
||||
)
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class Order(Base): # python里的表名字
|
||||
__tablename__ = 'order_info_detail' # 实际数据库的表名字
|
||||
id = Column( Integer # 声明字段的数据类型
|
||||
, primary_key=True # 声明是主键
|
||||
, autoincrement=True # 声明是自增主键
|
||||
, comment='订单编号,自增主键' # 注释
|
||||
)
|
||||
title = Column( String(50) # 对应数据库的varchar类型
|
||||
,nullable=False # 不允许为null
|
||||
)
|
||||
userid = Column( Integer ) # 外键约束
|
||||
create_date = Column(DATETIME
|
||||
, default=datetime.now # 默认值是当前时间
|
||||
)
|
||||
update_date = Column(DATETIME
|
||||
, default=datetime.now # 首次创建的时间跟更新时间一致
|
||||
, onupdate=datetime.now
|
||||
)
|
||||
Order.__table__.create(engine, checkfirst=True)
|
||||
session = sessionmaker(bind=engine
|
||||
,autoflush=False
|
||||
,autocommit=False
|
||||
)
|
||||
# ② 定义请求体模型,编写post接口对数据库的订单表插入数据
|
||||
class Order1(BaseModel):
|
||||
title:str
|
||||
userid:int
|
||||
app = FastAPI(title='订单增删改')
|
||||
@app.post('/Orders')
|
||||
def order1(o:Order1=Form()):
|
||||
db = session()
|
||||
d = o.model_dump()
|
||||
o1 = Order(**d)
|
||||
db.add(o1)
|
||||
db.commit()
|
||||
db.close()
|
||||
return o1
|
||||
# ③ 编写put接口对订单进行更新操作
|
||||
@app.put('/Orders')
|
||||
def order1(id:int,o:Order1=Form()):
|
||||
db = session()
|
||||
db.query(Order).filter(Order.id == id).update(o.model_dump(exclude_unset=True))
|
||||
db.commit()
|
||||
db.close()
|
||||
return '查询订单'
|
||||
# ④ 编写get接口对订单进行查询操作
|
||||
@app.get('/Orders')
|
||||
def order1(title:str|None=None,id:int|None=None):
|
||||
db = session()
|
||||
print(title,id)
|
||||
r = db.query(Order).filter(or_(Order.title == title,Order.userid == id)).all()
|
||||
db.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]
|
||||
# ⑤ 编写delete接口对订单进行删除操作
|
||||
@app.delete('/Orders')
|
||||
def order1(title:str,id:int|None=None):
|
||||
db = session()
|
||||
db.query(Order).filter(or_(Order.title == title,Order.id == id)).delete()
|
||||
db.commit()
|
||||
db.close()
|
||||
return '删除成功'
|
||||
# ⑥ 总结下orm跟fastapi接口的结合使用步骤以及简单的语法结构框架
|
||||
'''
|
||||
连接数据库,创建模型基类,定义数据库表模型,以及数据库会话工具
|
||||
'''
|
||||
'''
|
||||
# 思考下:
|
||||
现在需要创建三个目录,api、model、schema
|
||||
① api目录里编写一个文件order_api.py ,利用api路由分发,存放编写好的以上四个订单增删改查接口
|
||||
② model目录里编写一个order_model.py ,存放的是订单表的表模型类
|
||||
③ schema目录里编写一个 order_schema.py , 存放的是订单表的相关请求体、相应体模型
|
||||
④ 在项目目录下创建一个 main.py文件,从main.py文件启动整个接口程序
|
||||
尝试操作下!
|
||||
'''
|
||||
@@ -0,0 +1,4 @@
|
||||
2026-09-10 22:49:57 - order_service - INFO - 业务信息:订单创建成功
|
||||
2026-09-10 22:49:57 - order_service - WARNING - 警告信息:库存不足
|
||||
2026-09-10 22:49:57 - order_service - ERROR - 错误信息:支付接口调用失败
|
||||
2026-09-10 22:49:57 - order_service - CRITICAL - 严重错误:数据库连接断开
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
# 步骤 1:定义员工抽象类 Emp
|
||||
# ①创建抽象类 Emp
|
||||
# ②定义 get_info()抽象方法,规定后续继承该父类的子类都必须要实现get_info()方法
|
||||
from abc import ABC,abstractmethod
|
||||
class Emp(ABC):
|
||||
@abstractmethod
|
||||
def get_info(self):
|
||||
pass
|
||||
|
||||
# 步骤 2:定义员工类 Employee,这个类继承 Emp 抽象类
|
||||
# ①创建类 Employee
|
||||
# ②添加类属性:company = "科技有限公司"(所有员工共享公司名)
|
||||
# ③初始化方法 __init__ 定义实例属性:name(姓名)、id(工号)、salary(工资)
|
||||
class Employee(Emp):
|
||||
company = "科技有限公司"
|
||||
def __init__(self,name,id,salary):
|
||||
self.name = name
|
||||
self.id = id
|
||||
self.salary = salary
|
||||
|
||||
|
||||
|
||||
# 步骤 3:给Employee类添加基础方法,在 Employee 中实现三个方法:
|
||||
# ① get_info():返回员工信息字符串(姓名、工号、公司、工资)
|
||||
# ② calculate_bonus(绩效等级):该方法用来计算薪资
|
||||
# 如果绩效输入的是A,返回薪资 salary + salary*0.3
|
||||
# 如果绩效输入的是B,返回薪资 salary + salary*0.2
|
||||
# 如果绩效输入的是C,返回薪资 salary + salary*0.1
|
||||
# ③ fun_work(工作方式):通过实例去调用时,入参使用的工作方式,返回'xxx员工正在使用xxx的方式工作'
|
||||
def get_info(self):
|
||||
return self.name,self.id,self.company,self.salary
|
||||
def calculate_bonus(self,x):
|
||||
if x=='A':
|
||||
return self.salary + self.salary*0.3
|
||||
elif x=='B':
|
||||
return self.salary + self.salary*0.2
|
||||
elif x=='C':
|
||||
return self.salary + self.salary*0.1
|
||||
def fun_work(self,a):
|
||||
return f'{self.name}员工正在使用{a}的方式工作'
|
||||
# 步骤 4:创建子类 Programmer(程序员),继承 Employee
|
||||
# ①继承 Employee
|
||||
# ②继承初始化方法,新增子类的实例属性:program_language(编程语言,如 Python/Java)
|
||||
# ③重写 get_info() 方法,查询所有属性的信息(多态:方法重写)
|
||||
class Programmer(Employee):
|
||||
def __init__(self,name,id,salary,python):
|
||||
super().__init__(name,id,salary)
|
||||
self.program_language=python
|
||||
def get_info(self):
|
||||
return self.name,self.id,self.company,self.salary,self.program_language
|
||||
def calculate_bonus(self,x):
|
||||
if x=='A':
|
||||
return self.salary + self.salary*1.5
|
||||
elif x=='B':
|
||||
return self.salary + self.salary*1.49
|
||||
elif x=='C':
|
||||
return self.salary + self.salary*1.45
|
||||
|
||||
# 步骤 5:创建子类 Manager(经理),继承 Employee
|
||||
# ①继承 Employee
|
||||
# ②继承 Employee 初始化方法,新增实例属性:department(管理部门)
|
||||
# ③重写 get_info() 方法,查询所有属性的信息
|
||||
class Manager(Employee):
|
||||
def __init__(self,name,id,salary,department):
|
||||
super().__init__(name,id,salary)
|
||||
self.department=department
|
||||
def get_info(self):
|
||||
return self.name,self.id,self.company,self.salary,self.department
|
||||
def calculate_bonus(self,x):
|
||||
if x=='A':
|
||||
return self.salary + self.salary*0.2
|
||||
elif x=='B':
|
||||
return self.salary + self.salary*0.1
|
||||
elif x=='C':
|
||||
return self.salary
|
||||
# 步骤 6:实现多态(重写奖金计算)
|
||||
# ① Programmer 重写 calculate_bonus(绩效等级):
|
||||
# 如果绩效输入的是A,返回薪资 salary + salary*1.5
|
||||
# 如果绩效输入的是B,返回薪资 salary + salary*1.49
|
||||
# 如果绩效输入的是C,返回薪资 salary + salary*1.45
|
||||
# ② Manager 重写 calculate_bonus(绩效等级):
|
||||
# 如果绩效输入的是A,返回薪资 salary + salary*0.2
|
||||
# 如果绩效输入的是B,返回薪资 salary + salary*0.1
|
||||
# 如果绩效输入的是C,返回薪资 salary
|
||||
# (父类、子类同名方法不同实现 = 多态)
|
||||
# ③ 通过一个统一的函数接口调用 get_info() 方法
|
||||
# ④ 通过一个统一的函数接口调用 calculate_bonus(绩效等级) 方法
|
||||
def get_info(i):
|
||||
return i.get_info()
|
||||
def calculate_bonus(j,x):
|
||||
return j.calculate_bonus(x)
|
||||
|
||||
if __name__=='__main__':
|
||||
e1=Employee('老1',1,12000)
|
||||
p1=Programmer('老2',2,18000,'java')
|
||||
m1=Manager('老3',3,20000,'项目部')
|
||||
print(get_info(e1))
|
||||
print(get_info(p1))
|
||||
print(get_info(m1))
|
||||
|
||||
print(calculate_bonus(p1,'A'))
|
||||
print(calculate_bonus(e1,'B'))
|
||||
print(calculate_bonus(m1,'A'))
|
||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
'''
|
||||
①模块里调用了logging日志模块,定义一个类Log
|
||||
②Log类里定义了初始化方法__init__(),初始化方法需要入两个参数,一个是日志器的名字name,一个是日志等级level,实例属性self.logName用来接收实例化的日志器的名字,需要其他属性时自己定义即可
|
||||
③定义logFile()方法,实例对象调用该方法时,需要入参文件名字fileName,调用该方法就启用日志器信息输出到指定的文件名里,日志的信息格式统一都是"年月日时分秒 - 日志器名字 - 日志等级 - 日志信息",输入的字符集编码写死成utf-8即可
|
||||
④定义logConsol()方法,实例对象调用该方法时,调用该方法就启用日志器信息输出到控制台,日志的信息格式统一都是"年月日时分秒 - 日志器名字 - 日志等级 - 日志信息"
|
||||
⑤最后定义一个message()方法,两个形参,一个形参接收日志级别,一个形参接收日志信息,实例调用该方法时,输出不同的日志级别信息
|
||||
'''
|
||||
import logging
|
||||
|
||||
class Log:
|
||||
def __init__(self,name,level):
|
||||
self.logger = logging.getLogger(name)
|
||||
self.level = level.upper()
|
||||
self.log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%S')
|
||||
|
||||
def logFile(self,filename):
|
||||
if self.logger.handlers:
|
||||
self.logger.handlers.clear()
|
||||
self.logger.setLevel(eval(f'logging.{self.level}'))
|
||||
file_handler = logging.FileHandler(filename,mode='a',encoding='utf-8')
|
||||
file_handler.setFormatter(self.log_formatter)
|
||||
self.logger.addHandler(file_handler)
|
||||
|
||||
def logConsol(self):
|
||||
if self.logger.handlers:
|
||||
self.logger.handlers.clear()
|
||||
self.logger.setLevel(eval(f'logging.{self.level}'))
|
||||
consol_handler = logging.StreamHandler()
|
||||
consol_handler.setFormatter(self.log_formatter)
|
||||
self.logger.addHandler(consol_handler)
|
||||
|
||||
def message(self,lvmes,mes):
|
||||
getattr(self.logger,lvmes.lower())(mes)
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
from fastapi import FastAPI
|
||||
from pydantic import BaseModel
|
||||
app = FastAPI()
|
||||
|
||||
# 定义请求体模型
|
||||
class UserRequest(BaseModel):
|
||||
username:str
|
||||
passwd:str
|
||||
|
||||
class UserResponse(BaseModel):
|
||||
code:int = 200
|
||||
detail:str = 'ok'
|
||||
totals:int = 0
|
||||
username:str
|
||||
|
||||
@app.post('/userinfo',response_model=UserResponse)
|
||||
def adduser(u:UserRequest):
|
||||
# return UserResponse(username=u.username)
|
||||
return u # 等价于 return UserResponse(username=u.username)
|
||||
|
||||
'''
|
||||
@app.post('/userinfo',response_model=UserResponse)
|
||||
def adduser(u:list[UserRequest]):
|
||||
user = [i.username for i in u]
|
||||
return UserResponse(code = 405,totals=len(u),username=user)
|
||||
# return u # 等价于 return UserResponse(username=u.username)
|
||||
'''
|
||||
@@ -0,0 +1,67 @@
|
||||
from sqlalchemy import *
|
||||
from sqlalchemy.orm import declarative_base,sessionmaker
|
||||
from datetime import datetime
|
||||
db_url = "mysql+pymysql://root:123456@127.0.0.1:3306/ai0824?charset=utf8mb4"
|
||||
engine = create_engine(db_url # 连接地址
|
||||
,pool_size=50 # 连接池,同时可以保持50个已经创建好的数据库连接,放在池子里缓存使用
|
||||
,echo=True
|
||||
)
|
||||
Base = declarative_base()
|
||||
class Order(Base): # python里的表名字
|
||||
__tablename__ = 'order_info_detail' # 实际数据库的表名字
|
||||
id = Column( Integer # 声明字段的数据类型
|
||||
, primary_key=True # 声明是主键
|
||||
, autoincrement=True # 声明是自增主键
|
||||
, comment='订单编号,自增主键' # 注释
|
||||
)
|
||||
title = Column( String(50) # 对应数据库的varchar类型
|
||||
,nullable=False # 不允许为null
|
||||
)
|
||||
acc = Column(Integer)
|
||||
userid = Column( Integer,ForeignKey('user_info_detail.id'),nullable=False ) # 外键约束
|
||||
create_date = Column(DATETIME
|
||||
, default=datetime.now # 默认值是当前时间
|
||||
)
|
||||
update_date = Column(DATETIME
|
||||
, default=datetime.now # 首次创建的时间跟更新时间一致
|
||||
, onupdate=datetime.now
|
||||
)
|
||||
|
||||
class User(Base): # python里的表名字
|
||||
__tablename__ = 'user_info_detail' # 实际数据库的表名字
|
||||
id = Column(Integer # 声明字段的数据类型
|
||||
, primary_key=True # 声明是主键
|
||||
, autoincrement=True # 声明是自增主键
|
||||
, comment='用户编号,自增主键' # 注释
|
||||
)
|
||||
usernmae = Column(String(50) # 对应数据库的varchar类型
|
||||
, nullable=False # 不允许为null
|
||||
, comment='用户名'
|
||||
)
|
||||
create_date = Column(DATETIME
|
||||
, default=datetime.now # 默认值是当前时间
|
||||
)
|
||||
update_date = Column(DATETIME
|
||||
, default=datetime.now # 首次创建的时间跟更新时间一致
|
||||
, onupdate=datetime.now
|
||||
)
|
||||
Base.metadata.create_all(engine)
|
||||
# User.__table__.create(engine,checkfirst = True)
|
||||
|
||||
|
||||
u1 = User(usernmae='清华')
|
||||
session = sessionmaker(bind=engine
|
||||
,autoflush=False
|
||||
,autocommit=False
|
||||
)
|
||||
db = session()
|
||||
|
||||
db.add(u1)
|
||||
db.commit()
|
||||
db.close()
|
||||
n = 4 # 页数
|
||||
m = 2 # 每页数据量
|
||||
|
||||
r6 = db.query(User).offset((n-1)*m).limit(m).all()
|
||||
for i in r6:
|
||||
print('分页:', i.id, i.usernmae)
|
||||
@@ -0,0 +1,21 @@
|
||||
from order_api import Order
|
||||
from product_api import Product
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from midlleware import m1,m2
|
||||
app = FastAPI()
|
||||
|
||||
app.include_router(Order)
|
||||
app.include_router(Product)
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=['*'],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
|
||||
app.middleware('http')(m1)
|
||||
app.middleware('https')(m2)
|
||||
@@ -0,0 +1,17 @@
|
||||
from fastapi import Response
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
async def m1(req,next):
|
||||
if req.client.host in ['192.168.5.14','192.168.5.17','127.0.0.1']:
|
||||
return Response(content='gun')
|
||||
r=await next(req)
|
||||
return r
|
||||
|
||||
|
||||
async def m2(req,next):
|
||||
a=datetime.now()
|
||||
r=await next(req)
|
||||
b=datetime.now()
|
||||
print(b-a)
|
||||
return r
|
||||
@@ -0,0 +1,9 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
Order = APIRouter()
|
||||
@Order.get("/dindan")
|
||||
def dindan():
|
||||
return "dindan"
|
||||
@Order.post("/dindan")
|
||||
def dindan():
|
||||
return "dindan"
|
||||
@@ -0,0 +1,9 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
Product=APIRouter()
|
||||
@Product.get("/shanping")
|
||||
def shaning():
|
||||
return {"message":"Hello World"}
|
||||
@Product.post("/shaning")
|
||||
def shaning():
|
||||
return {"message":"Hello World"}
|
||||
@@ -0,0 +1,14 @@
|
||||
b = {1:'张三', 2:'老王', 3:'王五'}
|
||||
|
||||
def select(sid):
|
||||
# 判断sid这个id是否是字典的键
|
||||
if sid in b:
|
||||
return b[sid] # 根据键取值
|
||||
else:
|
||||
return None
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
print(select(1))
|
||||
print(select(2))
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
ClassAPI = APIRouter(tags=['班级对象'])
|
||||
|
||||
# 【班级相关的】
|
||||
'''面向的资源是班级对象'''
|
||||
|
||||
|
||||
# 定义新增classinfo的接口
|
||||
@ClassAPI.post('/classinfo')
|
||||
def add_stu():
|
||||
return '新增classinfo'
|
||||
|
||||
|
||||
# 定义更新classinfo信息的接口
|
||||
@ClassAPI.put('/classinfo')
|
||||
def update_stu():
|
||||
return '更新classinfo'
|
||||
|
||||
|
||||
# 定义查询classinfo信息的接口
|
||||
@ClassAPI.get('/classinfo')
|
||||
def get_stu():
|
||||
return '获取classinfo'
|
||||
|
||||
|
||||
# 定义删除classinfo信息接口
|
||||
@ClassAPI.delete('/classinfo')
|
||||
def del_stu():
|
||||
return '删除classinfo'
|
||||
|
||||
Reference in New Issue
Block a user