当前位置:首页>python>Python刷题系统实训二:数据库相关1

Python刷题系统实训二:数据库相关1

  • 2026-10-11 07:07:17
Python刷题系统实训二:数据库相关1

Python刷题系统实训二:数据库相关1

本系统数据库使用 SQLite。Python 使用 SQLite 的核心优势在于内置零依赖、单文件便携、零配置即开即用,是轻量级本地存储与快速开发的首选方案。

一、数据库设计

数据库名为 exam.db,内含三张数据表:

表名

字段

用户表 user

id, username, password

题库表 exam_tm

id, tm, ana, anb, anc, andd, tan, tlx

成绩表 chengji

id, userid, chengji, leibie

二、利用 Navicat 建库建表并导入数据

用 Navicat 新建 SQLite 数据库 exam.db,按上表结构创建三张表。

导入用户表数据(user.xlsx)和题库数据(tm.xlsx)。

三、数据库初始化与会话管理

系统较小时所有代码可以放在 main.py 中,但建议将数据库相关代码单独拆分到 dataDB.py,然后在 main.py 中导入使用。

需要导入的包:

from sqlalchemy import create_engine, String, func, Integer

from sqlalchemy.orm import sessionmaker, mapped_column, Mapped, DeclarativeBase, Session

新建变量定义 SQLite 连接 URL:

DB_URL = "sqlite:///./exam.db"

创建数据库引擎(Engine):

engine = create_engine(DB_URL, connect_args={"check_same_thread": False})

建立会话工厂(SessionMaker):

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

定义依赖注入函数:

def get_db():

db= SessionLocal()

try:

yielddb

finally:

db.close()

会话(Session)是 SQLAlchemy 操作数据库的「操作句柄」。FastAPI 中通过 sessionmaker 创建会话工厂,每次接口请求生成一个独立会话。get_db 是一个生成器函数,FastAPI 的依赖注入系统会自动调用它——给每个请求分配一个独立的数据库 Session,请求结束后自动关闭。这是 FastAPI 最常用的数据库 Session 管理方式。

最新文章

随机文章