当前位置: 首页 > news >正文

宁波怎么建网站模板站/天津百度整站优化服务

宁波怎么建网站模板站,天津百度整站优化服务,南方网通g3云推广,第一接单网appsqlalchemy FastAPI 前端实现数据库增删改查 仅个人学习笔记,感谢点赞关注! 知识点 连接数据库sqlalchemy 创建表结构FastAPI get post put delete操作FastAPI 请求体 路径和修改参数 依赖项 代码 # -*- ecoding: utf-8 -*- # Author: SuperLong # Em…

sqlalchemy FastAPI 前端实现数据库增删改查

仅个人学习笔记,感谢点赞关注!


知识点
  • 连接数据库
  • sqlalchemy 创建表结构
  • FastAPI get post put delete操作
  • FastAPI 请求体 路径和修改参数 依赖项

代码
# -*- ecoding: utf-8 -*-
# @Author: SuperLong
# @Email: miu_zxl@163.com
# @Time: 2024/9/9 17:04
import os
import uvicorn
from fastapi import FastAPI, Depends, HTTPException, Path,status
from pydantic import BaseModel
from typing import List,Optional,Set
from sqlalchemy import create_engine, Column, Integer, String, and_, select, update
from sqlalchemy.orm import sessionmaker, Mapped, DeclarativeBase, mapped_columnengine = create_engine('mysql://root:long520@localhost/test',echo=True)
class Base(DeclarativeBase):pass
class StudentClass(Base):__tablename__ = "StudentClass"id:Mapped[str]=mapped_column(Integer,primary_key=True)name:Mapped[str]=mapped_column(String(50),nullable=False)gender:Mapped[str]=mapped_column(String(5),nullable=False)Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()class StudentBase(BaseModel):id:intname:strgender:strclass StudentIn(StudentBase):passclass StudentOut(StudentBase):passdef get_db():db = Session()try:yield dbfinally:db.close()app = FastAPI()@app.get('/students')
async def get_students(db:Session=Depends(get_db)):query = select(StudentClass).order_by(StudentClass.id)return db.execute(query).scalars().all()@app.post('/students',response_model=StudentOut)
async def create_students(student:StudentIn,db:Session=Depends(get_db)):query = select(StudentClass).where(StudentClass.name == student.name)result = db.execute(query).scalars().all()if result:raise HTTPException(status_code=400,detail=f"学生 {student.name} 已存在")new_student = StudentClass(id=student.id,name=student.name,gender=student.gender)db.add(new_student)db.commit()return new_student@app.put('/students/{student_id}',response_model=StudentOut)
async def update_students(*,student_id:int=Path(...),student:StudentBase,db:Session=Depends(get_db)):query = select(StudentClass).where(StudentClass.id == student_id)result = db.execute(query).scalar()if not result:raise HTTPException(status_code=400, detail=f"学生ID {student_id} 不存在")def update_mm(students:dict,changes:dict):for keys,values in changes.items():setattr(students,keys,values)update_mm(result,student.model_dump())db.commit()return result@app.delete('/students/{student_id}',response_model=StudentOut)
def delete_students(student_id:int=Path(...),db:Session=Depends(get_db)):query = select(StudentClass).where(student_id == StudentClass.id)result = db.execute(query).scalar()if not result:raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"学生ID {student_id} 不存在")db.delete(result)db.commit()return resultif __name__ == '__main__':print(os.path.split(os.path.abspath(__file__))[1])uvicorn.run(port=5025,app=f"{os.path.split(os.path.abspath(__file__))[1].split('.')[0]}:app",reload=True)# # todo 增
# students = [
#             StudentClass(id=1, name="张",gender="男",phone_number="13463135455"),
#             StudentClass(id=2, name="张龍",gender="男",phone_number="13463125455"),
#             StudentClass(id=3, name="张晓同",gender="男",phone_number="13463145455"),
#             StudentClass(id=4, name="张晓里",gender="男",phone_number="13463165455"),
# ]
# session.add_all(students)
# session.commit()
# # todo 查
# result = session.query(StudentClass).filter(StudentClass.gender == "男").all()
# for ii in result:
#     print("name:",ii.id)
#     print("brithday:",ii.name)# todo 改
# result = session.query(StudentClass).filter(
#     and_(
#     StudentClass.gender == "男",
#     StudentClass.name == "李楠"
#     )
# ).update(
#     {StudentClass.phone_number:"123456789"}
# )
#
# session.commit()
# todo 删
# result = session.query(StudentClass).filter(
#     and_(
#         StudentClass.gender == "男",
#         StudentClass.name == "李佳"
#     )
# ).delete()
# session.commit()

目前专注于NLP、大模型和前后端的技术学习和分享

感谢大家的关注与支持!
http://www.fp688.cn/news/488.html

相关文章:

  • 998元网站建设优化/免费网页制作成品
  • 河北网站建设多少钱/简述获得友情链接的途径
  • 福建省鑫通建设有限公司网站/陕西网络推广介绍
  • 网站开发常用的流程/最全bt搜索引擎
  • 沈阳有资质做网站的公司有哪些/百度云网盘免费资源
  • 做响应式网站是不是都用rem/谷歌广告平台
  • 罗湖商城网站建设哪家便宜/电商产品推广方案
  • 上海专业网站开发/上海全网营销推广
  • 网站建立安全连接失败/免费网站软件
  • 南京网站制作招聘网/信息流优化
  • 产品展示类网站/佛山快速排名seo
  • 网站维护模板/网站seo是啥
  • 久治县网站建设公司/广告推广策划
  • 自助建站网站建设/济南seo整站优化价格
  • 郑州市做网站的公司/上海网站搜索排名优化哪家好
  • 深圳网站建设电话/搜索引擎优化教材答案
  • 做网站的作用/营销技巧有哪些
  • 建设网银登录网站/宁波seo网络推广推荐
  • 网站制作的页面比例/天津seo网络
  • 免费创建虚拟网站/百度搜索引擎优化
  • 新乡网站优化公司/网络营销这个专业怎么样
  • 用路由侠做网站/电商培训机构推荐
  • 福州网站设计公司/关联词有哪些三年级
  • 网站防注入/sem竞价开户
  • 东莞做网站 南城信科/广州网络营销
  • 做+淘宝客最大的网站是叫什么/百度seo关键词排名价格
  • 建网站提供下载/app接入广告变现
  • 网站设计教程视频下载/农村电商平台有哪些
  • 广东专业做网站排名公司/宁波seo网络推广定制多少钱
  • 网站建设营销企业/竞价推广代运营公司