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

FastAPI - 数据库操作5

先安装mysql驱动程序

pipenv install pymysql

安装数据库ORM库SQLAlchemy

pipenv install SQLAlchemy

修改文件main.py文件内容

设置数据库连接

# -*- coding:utf-8 –*-
from fastapi import FastAPIfrom sqlalchemy import create_engineHOST = '192.168.123.228'
PORT = 3306
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'fenxiangyin'db_url = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}"
engine = create_engine(db_url)

初始化会话工厂

from sqlalchemy.orm import sessionmaker
engine = create_engine()
SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionFactory()

定义Base类:映射到数据表的ORM类

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

构建模型层

from sqlalchemy import Boolean, Column, ForeignKey, Integer, Stringclass User(Base):__tablename__:str = "user"id = Column(Integer, primary_key=True)username = Column('username',String, unique=True, index=True)password = Column('password',String)

执行增删改查操作

app = FastAPI()#新增
@app.get("/user/add")
async def user_add():user1 = User(username="vvv", password="123")session.add(user1)session.commit()return user1.id#修改
@app.get("/user/update")
async def user_update():user1 = session.query(User).filter(User.id == 1).first()user1.password = "456"session.commit()return True#删除
@app.get("/user/delete")
async def user_find():user1 = session.query(User).filter(User.id == 1).first()session.delete(user1)session.commit()return True

完整代码

# -*- coding:utf-8 –*-
from fastapi import FastAPIfrom sqlalchemy import create_engineHOST = '192.168.123.228'
PORT = 3306
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'fenxiangyin'db_url = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}"from sqlalchemy.orm import sessionmakerengine = create_engine(db_url)
SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionFactory()from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()from sqlalchemy import Boolean, Column, ForeignKey, Integer, Stringclass User(Base):__tablename__:str = "user"id = Column(Integer, primary_key=True)username = Column('username',String, unique=True, index=True)password = Column('password',String)app = FastAPI()#新增
@app.get("/user/add")
async def user_add():user1 = User(username="vvv", password="123")session.add(user1)session.commit()return user1.id#修改
@app.get("/user/update")
async def user_update():user1 = session.query(User).filter(User.id == 1).first()user1.password = "456"session.commit()return True#删除
@app.get("/user/delete")
async def user_find():user1 = session.query(User).filter(User.id == 1).first()session.delete(user1)session.commit()return True
http://www.lryc.cn/news/359359.html

相关文章:

  • HTML静态网页成品作业(HTML+CSS)—— 冶金工程专业展望与介绍介绍网页(2个页面)
  • Flutter基础 -- Dart 语言 -- 注释函数表达式
  • “仿RabbitMQ实现消息队列”---整体架构与模块说明
  • springboot如何快速接入minio对象存储
  • 第六届“智能设计+运维”国产工业软件研讨会暨2024年天洑软件用户大会圆满召开
  • 05.k8s弹性伸缩
  • 【数据结构】详解二叉树
  • MapDB:轻量级、高性能的Java嵌入式数据库引擎
  • Rye: 一个革新的Python包管理工具
  • 如何在C#代码中判断当前C#的版本和dotnet版本
  • Linux 36.3@Jetson Orin Nano之系统安装
  • 案例实践 | 基于长安链的首钢供应链金融科技服务平台
  • Vue3实战笔记(55)—Vue3.4新特性揭秘:defineModel重塑v-model,拥抱高效双向数据流!
  • C++ | Leetcode C++题解之第123题买卖股票的最佳时机III
  • 微信小程序中Button组件的属性值和用法详解
  • 等保测评 | 等保测评简介及流程具体是什么?
  • CompassArena 司南大模型测评--代码编写
  • 叉积和法向量学习笔记
  • YZW900规格书
  • 9岁学生学什么编程好一些:探索编程启蒙的奥秘
  • Java反射实战指南:反射机制的终极指南
  • 高效训练超越LoRA,北航发布MoRA
  • 【Spring】Spring之依赖注入源码解析(上)
  • HBase 常用 shell 操作
  • 【区分vue2和vue3下的element UI InputNumber 计数器组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • 科普健康短视频:成都鼎茂宏升文化传媒公司
  • Amis源码构建 sdk版本
  • 【MySQL数据库】:MySQL复合查询
  • PS Mac Photoshop 2024 for Mac[破]图像处理软件[解]PS 2024安装教程[版]
  • 深入URP之Shader篇16: UNITY_BRANCH和UNITY_FLATTEN