Flask+SQLite实现用户管理接口

用户管理模块接口开发

用户管理是后端系统的核心模块之一,涉及用户注册、登录、信息查询、更新与删除等基础能力。本文以一个基于 Python Flask + SQLite 的轻量实现为例,演示用户模块的接口设计与开发要点,代码可直接运行。

一、环境准备

安装依赖:

复制代码
pip install flask flask-cors

创建项目结构:

复制代码
user_api/
├── app.py          # 主入口
├── db.py           # 数据库操作
└── requirements.txt

二、数据库设计

db.py 负责建表与连接管理。用户表包含 id、username、password、email、created_at 字段。

复制代码
import sqlite3

def get_conn():
    conn = sqlite3.connect('user.db')
    conn.row_factory = sqlite3.Row
    return conn

def init_db():
    conn = get_conn()
    conn.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT UNIQUE NOT NULL,
            password TEXT NOT NULL,
            email TEXT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    ''')
    conn.commit()
    conn.close()

三、接口实现

1. 用户注册

复制代码
from flask import Flask, request, jsonify
from werkzeug.security import generate_password_hash

app = Flask(__name__)

@app.route('/api/users/register', methods=['POST'])
def register():
    data = request.get_json()
    username = data.get('username')
    password = data.get('password')
    if not username or not password:
        return jsonify({'code': 400, 'msg': '用户名或密码不能为空'}), 400

    conn = get_conn()
    if conn.execute('SELECT id FROM users WHERE username=?', (username,)).fetchone():
        conn.close()
        return jsonify({'code': 400, 'msg': '用户名已存在'}), 400

    hashed = generate_password_hash(password)
    conn.execute('INSERT INTO users (username, password) VALUES (?,?)', (username, hashed))
    conn.commit()
    conn.close()
    return jsonify({'code': 200, 'msg': '注册成功'}), 200

2. 用户登录

复制代码
from werkzeug.security import check_password_hash

@app.route('/api/users/login', methods=['POST'])
def login():
    data = request.get_json()
    conn = get_conn()
    row = conn.execute('SELECT * FROM users WHERE username=?',
                       (data.get('username'),)).fetchone()
    conn.close()
    if row and check_password_hash(row['password'], data.get('password')):
        return jsonify({'code': 200, 'msg': '登录成功', 'user_id': row['id']})
    return jsonify({'code': 401, 'msg': '用户名或密码错误'}), 401

3. 查询与更新用户

复制代码
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    conn = get_conn()
    row = conn.execute('SELECT id, username, email, created_at FROM users WHERE id=?',
                       (user_id,)).fetchone()
    conn.close()
    if not row:
        return jsonify({'code': 404, 'msg': '用户不存在'}), 404
    return jsonify({'code': 200, 'data': dict(row)})

@app.route('/api/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    data = request.get_json()
    conn = get_conn()
    conn.execute('UPDATE users SET email=? WHERE id=?', (data.get('email'), user_id))
    conn.commit()
    conn.close()
    return jsonify({'code': 200, 'msg': '更新成功'})

四、启动与测试

复制代码
if __name__ == '__main__':
    init_db()
    app.run(host='0.0.0.0', port=5000, debug=True)

用 curl 验证:

复制代码
curl -X POST [http://localhost:5000/api/users/register](http://localhost:5000/api/users/register) \
  -H "Content-Type: application/json" \
  -d '{"username":"alice","password":"123456"}'

五、小结

本示例实现了用户模块的增查改核心接口,并采用密码哈希存储保障安全。生产环境中可进一步接入 JWT 鉴权、参数校验框架、统一异常处理与日志监控,提升接口的健壮性与可维护性。

海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】

相关推荐
全栈练习生1 小时前
RAG 准确率保障的体系化方案
python·ai
秋秋小事1 小时前
python 基础知识总结(一)
python
蜗牛互联网1 小时前
Python调用Gemini Structured Outputs实现工单路由门禁
java·开发语言·人工智能·python
TomEval1 小时前
【测AI】第12篇:NLP / CV / 语音 —— 三大 AI 方向速通
人工智能·python·自然语言处理·aigc·测试用例
SEO_juper1 小时前
给网页做可引用性评分:判断内容够不够让 AI 引用(GEO 工具,附代码)
开发语言·人工智能·爬虫·python·seo·独立站
AI直播技术杂谈1 小时前
无人直播中控的硬件底线,旧电脑要满足哪些条件
网络·python·ai·云计算
Helix2502 小时前
Python数据分析实战:Pandas清洗豆瓣短评与情感分析完整指南
python·pandas·数据清洗·情感分析··snownlp·文本数据处理
MerryLuna2 小时前
专业的EUDR机构
大数据·人工智能·python
ueotek2 小时前
Ansys Zemax丨在 OpticStudio 中拟合折射率数据
python·软件工程·ansys·光学仿真·光学设计·zeamx