You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SQLite3数据库对接至银行系统登录模块实现凭证校验

SQLite3数据库对接银行系统登录模块实现方案

你已完成文件I/O版单用户业务逻辑、Bank_Users.db数据库及bank表搭建(PIN为主键,存储用户名,预置5条测试数据),对接核心是通过参数化查询匹配用户输入的凭证,校验通过即完成登录,以下是可直接落地的实现方式。


核心实现逻辑

整个对接流程不需要改动你已经写好的存取款、菜单业务代码,只需要替换原来文件I/O的凭证校验部分即可,分三步:

  • 接收用户输入的用户名、PIN码
  • 连接数据库执行参数化查询,匹配bank表中同时符合用户名、PIN一致的记录
  • 匹配到记录则判定为合法用户,加载对应账户的操作菜单;无匹配记录则返回凭证错误提示

注意:所有涉及用户输入的SQL查询必须用参数占位符实现,禁止直接拼接SQL字符串,避免SQL注入风险。

前置表结构确认

对接前先确认你的bank表字段和建表逻辑一致,参考建表语句如下(如果你的表已经建好可以跳过这步,注意保证测试数据里存在用户名Kailas Kurup、PIN7620的记录即可):

CREATE TABLE IF NOT EXISTS bank (
    pin INTEGER PRIMARY KEY,
    username TEXT NOT NULL,
    balance REAL DEFAULT 0.0 -- 余额字段,后续存取款业务直接使用
);

可复用对接代码

import sqlite3
from typing import Optional, Dict

def get_db_connection():
    """封装数据库连接逻辑,减少重复代码"""
    conn = sqlite3.connect('Bank_Users.db')
    conn.row_factory = sqlite3.Row  # 支持按字段名读取查询结果
    return conn

def login_verify(input_username: str, input_pin: int) -> Optional[Dict]:
    """
    登录凭证校验
    校验通过返回用户信息字典,失败返回None
    """
    conn = get_db_connection()
    cursor = conn.cursor()
    # 用?作为参数占位符,传入用户输入的内容做匹配
    cursor.execute(
        "SELECT pin, username, balance FROM bank WHERE username = ? AND pin = ?",
        (input_username.strip(), input_pin)
    )
    matched_user = cursor.fetchone()
    conn.close()
    return dict(matched_user) if matched_user else None

# 登录流程测试
if __name__ == "__main__":
    print("=== 银行账户管理系统登录 ===")
    username = input("请输入用户名:").strip()
    pin = int(input("请输入PIN码:"))
    current_user = login_verify(username, pin)
    if current_user:
        print(f"登录成功!欢迎{current_user['username']}")
        print(f"当前账户余额:{current_user['balance']}元")
        # 此处直接接入你已经开发完成的存款、取款、操作菜单逻辑即可
    else:
        print("登录失败:用户名或PIN码错误,请重试")

后续接入注意事项

  • 后续接入Tkinter GUI时,只需要把命令行input获取输入的部分,替换成GUI输入框的取值逻辑即可,校验和业务逻辑不需要改动
  • 数据库连接使用完要及时关闭,避免出现数据库文件锁死的问题;如果后续业务操作频繁,可以封装全局数据库连接对象,减少重复开关连接的开销
  • 原来第一阶段开发的存取款逻辑,只需要把原来读写文件更新余额的部分,替换成SQL的UPDATE语句操作bank表对应记录的balance字段即可,核心业务流程不需要重写
  • 测试时输入用户名Kailas Kurup、PIN7620,只要预置数据中存在该条记录,即可正常识别并登录

内容的提问来源于stack exchange,提问作者kkurup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 22:40:50