基于flask与sqlite数据库完成基础的用户增加删除修改查询的教学展示案例

1、用户明细页面

2、创建用户界面

3-用户详情与修改删除页面

业务逻辑代码

from flask import Flask, request, render_template, url_for, redirect
import sqlite3

app = Flask(__name__)

def create_table():
    cursor = conn.cursor()
    cursor.execute('''CREATE TABLE IF NOT EXISTS users (
                        id INTEGER PRIMARY KEY AUTOINCREMENT,
                        name TEXT,
                        email TEXT,
                        password TEXT)''')
    conn.commit()
    # 生成10条测试数据
    # for i in range(1, 11):
    #     name = f'用户{i}'
    #     email = f'user{i}@example.com'
    #     password = f'password{i}'
    #     cursor.execute("INSERT INTO users (name, email, password) VALUES (?, ?, ?)", (name, email, password))
    #     conn.commit()

@app.route('/api/users-get', methods=['GET'])
def get_users():
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    rows = cursor.fetchall()
    conn.commit()
    return render_template('users.html', users=rows)

@app.route('/create-user', methods=['GET'])
def render_create_user():
    return render_template('create_user.html')

@app.route('/api/users-create', methods=['POST'])
def create_user():
    name = request.form['name']
    email = request.form['email']
    password = request.form['password']
    cursor = conn.cursor()
    cursor.execute("INSERT INTO users (name, email, password) VALUES (?, ?, ?)", (name, email, password))
    user_id = cursor.lastrowid
    conn.commit()
    return redirect(url_for('show_user', user_id=user_id))

@app.route('/user/<int:user_id>')
def show_user(user_id):
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users WHERE id=?", (user_id,))
    user = cursor.fetchone()
    return render_template('user_detail.html', user=user)

@app.route('/api/users/get/<int:user_id>', methods=['GET'])
# @app.route('/api/users/get/<int:user_id>')
def get_user(user_id):
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
    row = cursor.fetchone()
    if row is None:
        return f"找不到ID为{user_id}的用户"
    else:
        return render_template('user_detail.html', user=row)

@app.route('/api/users/update/<int:user_id>', methods=['GET', 'POST'])
def update_user(user_id):
    name = request.form['name']
    email = request.form['email']
    password = request.form['password']
    cursor = conn.cursor()
    cursor.execute("UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?", (name, email, password, user_id))
    conn.commit()
    return render_template('update_result.html', user_id=user_id, name=name, email=email, password=password)

@app.route('/api/users/delete/<int:user_id>', methods=['GET', 'POST'])
def delete_user(user_id):
    cursor = conn.cursor()
    cursor.execute("DELETE FROM users WHERE id = ?", (user_id,))
    conn.commit()
    return render_template('delete_result.html', user_id=user_id)

@app.teardown_appcontext
def close_connection(exception):
    conn = sqlite3.connect('database.db')
    conn.close()
'''
这段代码是在 Flask 应用的 teardown_appcontext 装饰器中定义了一个函数,用于在每个请求处理完成后关闭数据库连接。
teardown_appcontext 装饰器会在应用上下文被销毁时调用注册的函数。
在 Flask 中,应用上下文是指每个请求的处理过程中创建的上下文环境,其中包含了一些请求的信息和全局对象。
当请求处理完成后,应用上下文会被销毁。
在你给出的代码中,teardown_appcontext 装饰器将 close_connection 函数注册为应用上下文被销毁时调用的函数。
在这个函数中,它创建了一个数据库连接 conn 并关闭了它。
通过这样的设置,在每个请求处理完成后,数据库连接都会被正确地关闭,避免了潜在的资源泄漏问题。
'''
if __name__ == '__main__':
    conn = sqlite3.connect('database.db',check_same_thread=False)
    create_table()
    app.run(host='0.0.0.0', port=5000)

完整代码:

https://download.csdn.net/download/douyu0814/88305437

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能教学实践

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值