nicegui中多次调用数据库操作总结

如果你的程序中 需要多次调用数据库操作(比如多个函数都要查用户、插日志、更新状态等),不要复用同一个游标或连接,而是采用 "每次操作都新建连接 + 使用 with" 的模式,并通过封装工具函数来避免重复代码。

python 复制代码
import sqlite3



CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))  # 获取当前脚本所在目录的绝对路径
DB_DIR = os.path.join(CURRENT_DIR, 'shujulu')             # 定义数据库文件夹路径为当前目录下的 'shujulu'
os.makedirs(DB_DIR, exist_ok=True)                        # 创建数据库目录(如果不存在)
DATABASE = os.path.join(DB_DIR, 'shujulu_02.db')              # 定义数据库文件完整路径






def db_execute(query, params=(), fetch=False):
    """
    执行 SQL 语句
    :param query: SQL 语句(带 ? 占位符)
    :param params: 参数元组
    :param fetch: 是否返回查询结果(SELECT 用 True,INSERT/UPDATE 用 False)
    :return: 如果 fetch=True,返回查询结果;否则返回 None
    """
    with sqlite3.connect(DATABASE) as conn:
        cursor = conn.cursor()
        cursor.execute(query, params)
        if fetch:
            return cursor.fetchall()
        # 否则自动 commit(with 退出时)

调用函数

python 复制代码
# 新建数据库--表
def init_db():
    # 使用 IF NOT EXISTS 避免重复创建报错
	db_execute('''
        CREATE TABLE IF NOT EXISTS user (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            userid TEXT UNIQUE NOT NULL,
            password TEXT NOT NULL,
            role TEXT,
            userid_ TEXT,
            password_ TEXT
        )
    ''')

    # 可以继续创建其他表




# 插入用户
def insert_user(userid, password, role, userid_, password_):
    db_execute(
        'INSERT INTO user (userid, password, role, userid_, password_) VALUES (?, ?, ?, ?, ?)',
        (userid, password, role, userid_, password_)
    )

# 查询用户
def get_user(userid):
    rows = db_execute('SELECT * FROM user WHERE userid = ?', (userid,), fetch=True)
    return rows[0] if rows else None

# 更新密码
def update_password(userid, new_pass):
    db_execute('UPDATE user SET password = ? WHERE userid = ?', (new_pass, userid))

仅供参考和研究。学习交流!!!

相关推荐
廿一夏2 小时前
MySql存储引擎与索引
数据库·sql·mysql
曲幽2 小时前
我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
redis·python·postgresql·vue3·fastapi·web·sqlalchemy·admin·fastapiadmin
前端若水3 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
lzhdim3 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室4 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
涛声依旧-底层原理研究所4 小时前
残差连接与层归一化通俗易懂的详解
人工智能·python·神经网络·transformer
csdn_aspnet4 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
TDengine (老段)4 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
fantasy_arch5 小时前
pytorch人脸匹配模型
人工智能·pytorch·python
熊猫_豆豆5 小时前
广义相对论水星近日点进动完整详细数学推导
python·天体·广义相对论