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

Fastapi 进阶三:数据库的应用

FastAPI 进阶三:数据库的深度应用

一、数据库基础与SQL概述

1.1 关系型数据库与非关系型数据库

在现代Web开发中,数据库系统主要分为两类:关系型数据库(SQL)和非关系型数据库(NoSQL)。关系型数据库通过预定义的表结构和SQL语言实现数据的规范化管理,典型代表包括MySQL、PostgreSQL和SQL Server。其核心特性包括:

  • ACID事务:原子性、一致性、隔离性和持久性
  • 结构化查询语言(SQL):标准化的数据库操作语言
  • 主外键约束:保障数据完整性

非关系型数据库(如MongoDB、Redis)则采用灵活的数据模型,适用于大规模分布式系统,其优势在于:

  • 水平扩展能力:通过分片实现横向扩展
  • 动态模式:无需预定义表结构
  • 高性能读写:适用于高并发场景

1.2 Python操作SQLite数据库

SQLite作为轻量级嵌入式数据库,常用于开发和测试环境。其Python操作流程如下:

import sqlite3# 创建数据库连接
conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,email TEXT UNIQUE)
''')# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com'))
conn.commit()# 查询数据
cursor.execute("SELECT * FROM users")
results = cursor.fetchall()
for row in results:print(row)# 关闭连接
conn.close()

关键操作包括:

  1. connect()建立数据库连接
  2. cursor()创建游标对象
  3. execute()执行SQL语句
  4. commit()提交事务
  5. fetchall()获取查询结果

1.3 ORM操作数据库

对象关系映射(ORM)技术通过将数据库表映射为Python类,实现代码与数据库的解耦。其核心优势包括:

  • 类型安全:编译时检查字段类型
  • 链式查询:构建复杂的查询条件
  • 自动迁移:根据模型生成数据库表

二、SQLAlchemy库深度应用

2.1 SQLAlchemy同步使用方式

SQLAlchemy作为Python最强大的ORM框架,提供声明式模型定义方式:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmakerBase = declarative_base()class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String(50))email = Column(String(100), unique=True)# 创建引擎
engine = create_engine('sqlite:///example.db', echo=True)# 创建表
Base.metadata.create_all(engine)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()# 添加数据
new_user = User(name='Bob', email='bob@example.com')
session.add(new_user)
session.commit()# 查询数据
users = session.query(User).filter(User.name == 'Bob').all()
for user in users:print(user.id, user.name)

2.2 SQLAlchemy异步使用方式

异步模式通过asyncmy驱动实现非阻塞I/O操作:

from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmakerengine = create_async_engine('mysql+asyncmy://user:password@localhost/db_name',echo=True
)AsyncSessionLocal 
http://www.dtcms.com/a/581520.html

相关文章:

  • 把VMware虚拟机下的Ubuntu系统文件夹中文路径名称改为英文(图文详解)
  • 建个小型网站服务器西部网站助手
  • How to manage python version via pyenv on mac m2 chip
  • 从零开始写算法-栈-最小值(记忆化pair)
  • 网站建设市场介绍电子商务网址
  • Sora:视频生成的突破与启示
  • Flutter:视频预览功能
  • IPIDEA海外代理助力-Youtube视频AI领域选题数据获取实践
  • 开机视频动画
  • 智能守护校园:视频汇聚平台EasyCVR如何构建校园消防安全新防线
  • 平台类网站建设企业网站个人备案
  • python+django/flask的车辆尾气检测排放系统-可视化大屏展示
  • AI Agent设计模式 Day 2:Plan-and-Execute模式:先规划后执行的智能策略
  • 32HAL——ADC模数转换多通道功能
  • 10_10_网站建站主页网站怎么建设
  • 模型不再是一整块!Hunyuan3D-Part 实现可控组件式 3D 生成
  • 【ZeroRange WebRTC】SDP 在 WebRTC 中的角色与工作原理(深入指南)
  • 高并发下的重复记录之谜:从前端到数据库的全方位排查
  • AI搜索时代品牌护城河:从“流量争夺”到“可信度竞争”的战略跃迁
  • 【推荐系统14】数据分析:以阿里天池新闻推荐为例学习
  • 安卓进阶——OpenGL ES
  • 做app动态界面的网站有哪些网站建设从哪入手
  • RV1126 NO.41:利用OPENCV的API计算轮廓面积
  • 15 langgraph基本组件
  • 网站开发答辩ppt上海网站排名
  • LeetCode 面试经典 150_二叉树_翻转二叉树(69_226_C++_简单)(DFS)
  • 【PLM实施专家宝典】离散制造企业ECO管理优化方案:构建自动化、零错误的变更引擎
  • go tool command
  • 网站流量如何做cms网站开发流程
  • HTML ASCII 编码解析与应用