• python实现用户登陆(sqlite数据库存储用户信息)


    python实现用户登陆(sqlite数据库存储用户信息)

    目录

    创建数据库
    
    数据库管理
    
    简单登陆
    

    有些地方还未完善。

    创建数据库

    import sqlite3
    #建一个数据库
    def create_sql():
        sql = sqlite3.connect("user_data.db")
        sql.execute("""create table if not exists
            %s(
            %s integer primary key autoincrement,
            %s varchar(128),
            %s varchar(128),
            %s varchar(128),
            %s char(128))"""
            % ('user',
                'id',
                'name',
                'passworld',
                'number',
                'status'
               ))
        sql.close()
    create_sql()
    
    #user_data.db为数据库文件名
    #create table if not exists为建立一个数据库指令,如果文件存在就打开,不存在就创建一个
    #%s对应后面的四个参数
    # 'user':表名
    # 'id':相当于一个索引,autoincrement指定为自动增量
    # 'name',用户名
    # 'passworld'用户密码
    # 'number':座位号
    # 'status:状态
    # sql.close()是关闭数据库,每次对数据库进行操作后,都要记得进行关闭操作
    
    
    #数据库的格式
    # file:user_data.db
    #     table:user
    #         id      name    passworld    number    status
    

    数据库管理

    import sqlite3
    
    
    # 数据库增加数据
    def add_data():
        input_name = input("请输入您的用户名:")
        input_passworld = input("请输入您的密码:")
        number=input('请输入学号')
        status=None
        sql = sqlite3.connect("user_data.db")
        sql.execute("insert into user(name,passworld,number,status) values(?,?,?,?)",
                    (input_name,input_passworld,number,status))
        sql.commit()
        print("添加成功")
        sql.close()
    
    
    # 这里增加了读取四个个参数values(?,?,?,?)字段里的四个?号,对应了参数input_name,input_passworld,number,status
    
    def showalldata():
        sql = sqlite3.connect("user_data.db")
        data = sql.execute("select * from user").fetchall()
        sql.close()
        return data
    # "select * from user"为查询user对应的表的所有资料的指令
    
    
    
    
    def drop():
        print('指定id删除')
        sql = sqlite3.connect("user_data.db")
        data = sql.execute("select * from user").fetchall()
        print('所有数据:'+str(data))
        while 1:
            id=input('请输入你要删除的数据的id:')
            sql.execute("DELETE FROM user WHERE id = %s" % id)
            sql.commit()
            print('删除完成')
            data=sql.execute("select * from user")
            print(data.fetchall())
            sql.close()
            break
    
    
    
    
    
    print("""
    1:增加数据
    2:查询数据
    3.删除数据
    q:退出
    """)
    while 1:
        option =None
        cho =input('选择您想要的进行的操作:')
        if cho == '1':
            add_data()
        elif cho == '2':
            data=showalldata()
            print(data)
        elif cho == '3':
            drop()
        elif cho == 'q':
            break
        else:
            "输入错误"
    

    简单登陆

    import sqlite3, getpass
    #保证每一个用户名和学号不同
    #输入用户名正确后,输入密码。用户名正确的情况下,密码连续输错三次,用户将被锁定,禁止登录系统
    #输入用户名后,如果用户名被锁定及无效用户名,程序会退出,请确保输入正确。
    
    def showdate(username):
        sql = sqlite3.connect('user_data.db')
        data = sql.execute("select * from user where name='%s'" % username).fetchone()
        sql.close()
        return data
    
    
    
    
    
    
    # ("select * from user where username='%s'"% name)这条指令用来查询表user的name字段的对应的数据
    # 最后返回用户名对应的资料
    
    def val():
        while 1:
            name = input("用户名:")  # 输入用户名
            data = showdate(name)  # 获取用户名对应的数据库资料
            if data:
                # passworld = getpass.getpass("密码")  # 输入密码
                passworld=input('密码:')
                if data[2] == passworld:
    
                    print("登录成功")
                    break
                else:
                    print("密码错误")
            else:
                print("用户名不存在")
    
    
    # getpass模块可以使输入的字符不可见,在python的shell中可能无效,在终端中和用户登录效果相同,不出现输入字符
    
    val()
    print("进入用户操作")
    

      

  • 相关阅读:
    row_number() over
    hubbledotnet 使用笔记
    Sql 递归
    aspnet_isapi.dll 和 iis
    正则题目
    Html to jsstring
    js 回车提交表单
    with as
    MSSQL 时间的操作
    php 执行mssql 里的语句,报错 The EXECUTE permission was denied on the object
  • 原文地址:https://www.cnblogs.com/-wenli/p/10290132.html
Copyright © 2020-2023  润新知