Python 入门:FastAPI + SQLite3 + Requests 基础教学

前言

本文从语法、库使用、数据库连接到接口开发、请求调用一步步讲解,适合新手学习与日后复习。全程使用 Python 内置库 + 轻量框架,无需复杂环境。

一、基础知识点说明

1.1 各组件作用

    • FastAPI:Python 高性能 Web 框架,用于快速编写 API 接口。
    • SQLite3:Python 内置轻量级数据库,无需安装、无需启动服务,直接以文件形式存储数据。
    • Requests:用于发送 HTTP 请求,测试或调用自己写的 API。
    • Uvicorn:ASGI 服务器,用于运行 FastAPI 项目。

1.2 环境安装

pip install fastapi uvicorn requests

SQLite3 为 Python 自带,无需安装。


二、SQLite3 基础语法

2.1 导入库

python 复制代码
import sqlite3

2.2 连接/创建数据库

python 复制代码
conn = sqlite3.connect("test.db")

文件不存在会自动创建

2.3 创建游标

python 复制代码
cursor = conn.cursor()

游标用于执行SQL语句

2.4 执行SQL语句

python 复制代码
# 创建表
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()

2.5 提交与关闭

python 复制代码
conn.commit()   # 提交增删改操作
conn.close()    # 关闭连接

导入库 → 连接(创建)数据库 → 创建游标对象(操作数据库) → 执行SQL语句 → 提交操作并关闭连接

三、FastAPI 基础语法

3.1 导入与创建应用

python 复制代码
from fastapi import FastAPI

app = FastAPI()

3.2 定义get接口

python 复制代码
@app.get("/hello")
def hello():
    return {"message": "Hello FastAPI"}

3.3 定义带参数get接口

python 复制代码
@app.get("/user")
def get_user(name: str):
    return {"你的名字": name}

3.4 定义post接口

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

3.5 运行服务

python 复制代码
import uvicorn

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

可以通过 http://127.0.0.1:8000/docs 来访问查看接口和调试

四、完整整合fastapi+sqlite3

新建文件 main.py ,以下为可直接运行的完整代码。

python 复制代码
import sqlite3
from fastapi import FastAPI
import uvicorn

# 创建 FastAPI 实例
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()

# 接口1:添加用户(POST)
@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


# 接口2:获取所有用户(GET)
@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 True

# 运行服务
if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000)

五、使用 Requests 请求接口(测试)

新建 test_request.py ,用于调用上面的 API。

python 复制代码
import requests

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

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

# 2. 获取用户列表
def get_users():
    res = requests.get(f"{url}/get_users")
    print("所有用户:", res.json())

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

六、运行步骤

  1. 运行 main.py 启动 API 服务
  2. 运行 test_request.py 发送请求
  3. 查看控制台输出
  4. 数据库文件 data.db 自动生成

七、核心逻辑总结

  1. SQLite 流程:连接 → 创建游标 → 执行 SQL → 提交 → 关闭
  2. FastAPI 流程:创建 app → 装饰器定义接口 → 编写函数 → 运行服务
  3. 传参方式:GET/POST 均可用 params 传参
  4. Requests 流程:指定 URL → 传参 → 获取响应 → 解析 JSON
相关推荐
risc12345617 小时前
python 的字符串前缀
开发语言·python
如竟没有火炬17 小时前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先
Pkmer18 小时前
古法编程·新解:Python 类型注解的"一箭三雕"之术
python·ai编程
吃好睡好便好18 小时前
在Matlab中绘制三维等高线图
开发语言·python·学习·算法·matlab·信息可视化
keineahnung234518 小时前
PyTorch symbolic_shapes 模組的 is_contiguous 從哪來?── sizes_strides_user 安裝與實作解析
人工智能·pytorch·python·深度学习
C137的本贾尼18 小时前
别怕异步:`async` 和 `await` 的简单理解
开发语言·python
__log18 小时前
ComfyUI 集成技术方案分析报告
javascript·python·django
有味道的男人18 小时前
1688 商品价格 API:阶梯价、代发价、批发价实时查询
开发语言·windows·python
范范@18 小时前
python基础-for循环和列表
开发语言·python