跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 实战:FastAPI + SQLite3 + Requests 接口开发教程

本教程演示如何使用 Python 构建轻量级 Web 服务。通过 FastAPI 定义接口,结合 SQLite3 进行数据持久化,并利用 Requests 库验证接口功能。内容涵盖环境配置、数据库操作、路由编写及完整项目整合,适合初学者快速掌握后端开发流程。

DevStack发布于 2026/3/28更新于 2026/6/532 浏览
Python 实战:FastAPI + SQLite3 + Requests 接口开发教程

前置环境

本项目基于 Python 生态,依赖包较少,无需复杂配置。

pip install fastapi uvicorn requests

SQLite3 是 Python 标准库的一部分,开箱即用。

技术选型

  • FastAPI: 现代异步 Web 框架,自动生成交互式文档。
  • SQLite3: 轻量级嵌入式数据库,适合本地或小型服务。
  • Requests: 标准的 HTTP 请求库,方便调试接口。
  • Uvicorn: 高性能 ASGI 服务器,驱动 FastAPI 运行。

数据库交互

操作 SQLite 遵循'连接 - 游标 - 执行 - 提交'的标准流程。

import sqlite3
conn = sqlite3.connect("test.db")
cursor = conn.cursor()

如果目标文件不存在,连接操作会自动创建它。执行完 SQL 语句后,务必提交变更并关闭连接。

# 创建表结构
cursor.execute('''CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    age INTEGER
)''')

# 插入记录
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("张三", 18))

# 查询数据
cursor.execute("SELECT * FROM users")
data = cursor.fetchall()

conn.commit()
conn.close()

接口定义

使用装饰器映射 URL 路径到 Python 函数。

from fastapi import FastAPI
app = FastAPI()

@app.get("/hello")
def hello():
    return {"message": "Hello FastAPI"}

@app.post("/add")
def add(name: str, age: int):
    return {"接收数据": {"name": name, "age": age}}

启动服务后,访问 http://127.0.0.1:8000/docs 即可查看 Swagger UI 文档。

import uvicorn
if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000)

项目整合

将数据库逻辑封装进 API 服务中。新建 main.py,在应用启动时初始化表结构。

import sqlite3
from fastapi import FastAPI
import uvicorn

app = FastAPI()

def init_db():
    conn = sqlite3.connect("data.db")
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            age INTEGER NOT NULL
        )
    ''')
    conn.commit()
    conn.close()

# 启动时初始化
init_db()

@app.post("/api/add_user")
def add_user(name: str, age: int):
    try:
        conn = sqlite3.connect("data.db")
        cursor = conn.cursor()
        cursor.execute("INSERT INTO users (name, age) VALUES (?,?)", (name, age))
        conn.commit()
        conn.close()
        return True
    except Exception as e:
        return False

@app.get("/api/get_users")
def get_users():
    conn = sqlite3.connect("data.db")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    users = cursor.fetchall()
    conn.close()
    result = []
    for u in users:
        result.append({
            "id": u[0],
            "name": u[1],
            "age": u[2]
        })
    return result

if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000)

注意:获取列表接口已修正返回值,确保能正确返回用户数据而非固定布尔值。

接口测试

使用 requests 模拟客户端请求,验证接口连通性。

import requests
url = "http://127.0.0.1:8000/api"

def add_user():
    res = requests.post(f"{url}/add_user", params={
        "name": "Python 学习者",
        "age": 20
    })
    print("添加结果:", res.json())

def get_users():
    res = requests.get(f"{url}/get_users")
    print("所有用户:", res.json())

if __name__ == "__main__":
    add_user()
    get_users()

运行步骤

  1. 启动 main.py 开启服务。
  2. 运行测试脚本发送请求。
  3. 观察控制台输出及生成的 data.db 文件。

整个流程涵盖了从数据库初始化到接口调用的闭环,掌握了这些基础,后续可扩展更多业务逻辑。

目录

  1. 前置环境
  2. 技术选型
  3. 数据库交互
  4. 创建表结构
  5. 插入记录
  6. 查询数据
  7. 接口定义
  8. 项目整合
  9. 启动时初始化
  10. 接口测试
  11. 运行步骤
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AI 如何自动生成一线与二线产区标准图
  • SDXL Prompt Styler 风格翻译:解决 AI 绘画提示词失控难题
  • WebGIS 实战:WKT 转 GeoJSON 方法与 Leaflet 集成
  • 主流 AI 大模型工具集合与功能介绍
  • CTFShow Web 命令执行 29-124 实战解析
  • Ubuntu 系统 ROS 环境一键安装流程
  • Ubuntu 22.04 下 VMware Tools 剪贴板与拖拽功能失效修复方案
  • 服务端高并发分布式架构演进之路
  • 学生与教育工作者免费获取 GitHub Copilot 权限指南
  • 鸿蒙分布式智能办公应用架构设计与性能优化
  • 存储过程开发模板与异常处理规范
  • 移动端 H5 开发与 PC 端 Web 开发的区别
  • 大模型人才年薪百万引关注,行业需求旺盛
  • 基于管道通信的 Linux 进程池实现详解
  • Linux 进程池实战:基于管道通信的任务分发系统
  • Linux 进程池实现:从原理到代码实战
  • 手搓简易 Linux 进程池:基于管道实现任务分发
  • 飞算 JavaAI:智能编程助手助力 Java 高效开发
  • Cursor 中配置与使用 MCP 服务实战指南
  • 基于 SpringBoot 的家具商城管理系统设计与实现

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online