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

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 导入库

import sqlite3

2.2 连接/创建数据库

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

文件不存在会自动创建

2.3 创建游标

cursor = conn.cursor()

游标用于执行SQL语句

2.4 执行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()

2.5 提交与关闭

conn.commit()   # 提交增删改操作 conn.close()    # 关闭连接

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

三、FastAPI 基础语法

3.1 导入与创建应用

from fastapi import FastAPI app = FastAPI()

3.2 定义get接口

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

3.3 定义带参数get接口

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

3.4 定义post接口

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

3.5 运行服务

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 ,以下为可直接运行的完整代码。

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。

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

Read more

MySQL查看命令速查表

MySQL查看命令速查表

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 1 ~> MySQL 查看类命令大全 * 1.1 查看数据库 * 1.2 查看表 * 1.3 查看数 * 1.4 查看用户 / 权限 * 1.5 最常用组合(截图里就是这套) * 2 ~> MySQL常用核心命令速查表 * 2.1 MySQL 常用核心命令速查表 * 2.

By Ne0inhk
Rust异步编程高级模式:并发控制、超时机制与实战架构

Rust异步编程高级模式:并发控制、超时机制与实战架构

Rust异步编程高级模式:并发控制、超时机制与实战架构 一、异步并发控制:Semaphore、Mutex、RwLock的异步版本 1.1 为什么需要异步同步原语? 💡在同步编程中,我们使用std::sync::Mutex、std::sync::RwLock、std::sync::Semaphore等同步原语来控制并发访问。这些原语在多线程场景下非常有效,但在异步编程中,它们会导致任务阻塞,影响性能。 异步同步原语通过await关键字暂停任务,而不是阻塞线程,从而提高了CPU利用率。Tokio提供了一系列异步同步原语,如tokio::sync::Mutex、tokio::sync::RwLock、tokio::sync::Semaphore。 1.2 异步Mutex(互斥锁) 异步Mutex的使用方式与标准库的类似,但需要使用await来获取锁。 usetokio::sync::Mutex;usestd::sync::Arc;

By Ne0inhk
SkyWalking - Spring Cloud Alibaba 全链路追踪实战

SkyWalking - Spring Cloud Alibaba 全链路追踪实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕SkyWalking这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * SkyWalking - Spring Cloud Alibaba 全链路追踪实战 🚀 * 1. 环境准备与核心概念 🧰 * 1.1 核心概念解析 * 1.2 环境准备 * 2. 构建 Spring Cloud Alibaba 微服务项目 🏗️ * 2.1 创建父工程 * 2.2 构建 `inventory-service`(库存服务) * 2.3 构建 `order-service`(订单服务) * 2.4 验证基础功能 * 3. 集成

By Ne0inhk