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

改造红黑树实现封装 map/set:感受C++ 标准容器的精妙设计与底层实现

改造红黑树实现封装 map/set:感受C++ 标准容器的精妙设计与底层实现

容器map/set的底层是红黑树,这一篇详解红黑树如何封装实现map/set。 1.map/set设计的巧妙之处 map是key/value类型,set是key类型,两个冲突的参数类型,是如何由红黑树封装而成? 暴力思路:两个红黑树,一个kv,一个k。可是这样代码复用率极低,维护成本高。 源码思路:利用 键提取器——仿函数 提取kv、k的key,用一颗红黑树实现map,set C语言一般用函数指针,但是它十分麻烦,C++有了仿函数就很方便 接下来在红黑树基础上封装map和set 2.map和set的实现 2.1map和set的基本框架 + 原红黑树结构变化 map是key、value结构,set是key结构:  既然我们要用一个红黑树封装实现map和set,那传的参数就得通用: 原本是K,V结构,现在,要改成通用的,就用T吧 T根据需要,可选择传pair<K,

By Ne0inhk
C++ 继承:面向对象的代码复用核心机制

C++ 继承:面向对象的代码复用核心机制

C++ 继承:面向对象的代码复用核心机制 💡 学习目标:掌握继承的基本语法与核心特性,理解不同继承方式的访问权限控制,能够通过继承实现代码复用与扩展。 💡 学习重点:继承的语法格式、三种继承方式的区别、基类与派生类的关系、继承中的构造与析构顺序。 一、继承的概念与核心价值 ✅ 结论:继承是 C++ 面向对象三大特性之一,允许一个类派生类继承另一个类基类的属性和行为,实现代码复用,同时支持派生类在基类基础上扩展新功能。 继承的核心价值体现在两个方面: 1. 代码复用:避免重复编写相同的成员变量和成员函数,降低代码冗余度 2. 功能扩展:派生类可以在基类的基础上新增属性和方法,满足更复杂的业务需求 生活中的继承示例:学生和老师都属于“人”,都有姓名、年龄等属性和吃饭、睡觉等行为。可以先定义 Person 基类,再让 Student 和 Teacher 继承 Person,并各自扩展专属功能。 二、继承的基本语法与实现 2.1

By Ne0inhk

STL缩略图完全指南:让Windows文件管理变得前所未有的简单

STL缩略图完全指南:让Windows文件管理变得前所未有的简单 【免费下载链接】STL-thumbnailShellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 还在为满屏的STL文件图标而头疼吗?每次都要打开专业软件才能确认3D模型内容?STL-thumbnail这款革命性的Windows壳扩展工具,将彻底改变你的3D文件管理方式! 为什么你需要STL缩略图功能? 在3D设计、工程建模和3D打印日益普及的今天,STL格式已成为三维模型交换的黄金标准。然而,传统的Windows文件资源管理器在这方面显得力不从心。 真实使用痛点: * 设计师需要快速浏览数十个设计方案 * 工程师要管理复杂的零部件库 * 3D打印爱好者收藏了数百个模型文件 * 教育工作者需要直观展示教学模型 想象一下,当你面对一个满是STL文件的文件夹时,每个文件都显示着相同的图标,你不得不逐个打开查看内容——这种低效

By Ne0inhk
【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发

【C++】右值引用与移动语义详解:如何利用万能引用实现完美转发

C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriority Queue与仿函数模板进阶-模板特化面向对象三大特性-继承机制面向对象三大特性-多态机制STL 树形结构容器二叉搜索树AVL树红黑树红黑树封装map/set哈希-开篇闭散列-模拟实现哈希哈希桶-模拟实现哈希哈希表封装 unordered_map 和 unordered_setC++11 新特性:序章 大家好,我是店小二。本篇文章将深入讲解C++11的新增特性,重点围绕右值引用与移动语义展开,并详细讨论如何利用万能引用实现完美转发。如果在阅读过程中有疑问或不同的见解,欢迎随时私信我进行进一步交流 🌈个人主页:是店小二呀 🌈C语言专栏:C语言 🌈C++专栏: C++ 🌈初阶数据结构专栏: 初阶数据结构 🌈高阶数据结构专栏: 高阶数据结构 🌈Linux

By Ne0inhk