用户注册登录(解决数据持久化)对接mysql数据库

1、个人版本

def database_connect():
    import pymysql
    db = pymysql.connect('127.0.0.1','root','123','student_info_library')
    cursor = db.cursor()
    sql = 'select * from student_table;'
    cursor.execute(sql)
    user_list_tuple = cursor.fetchall()
    i = 0
    while i < len(user_list_tuple):
        user_list.append(user_list_tuple[i])

        i += 1

    cursor.close()
    db.close()
    print('提取的用户名信息:', user_list)
    print('数据提取成功,断开数据库连接')









def menu():
    print('请输入相应数字进入相应功能:\n1、注册\n2、登录\n3、退出')


def register():
    user_reg = input('请输入要注册的用户名:')
    password_reg = input('请输入要注册的密码:')
    user_tuple = (user_reg,password_reg)
    has_reg = 0 #列表中不存在注册的用户
    i = 0
    while i < len(user_list):
        if user_reg == user_list[i][0]:
            has_reg = 1
        i += 1
    if has_reg == 0:
        new_user_list.append(user_tuple)
        print('注册成功')
    else:
        print('此用户名已注册,请换其他用户名重新注册')
    #print(user_list)
    print(new_user_list)#新注册用户

def login():
    user_login = input('请输入已注册的用户名:')
    password_login = input('请输入已注册用户名的密码:')
    is_true = 0 #表示登录不成功
    i = 0
    while i < len(user_list):
        if user_login in user_list[i] and password_login in user_list[i]:
            is_true = 1#修改状态,表示登录成功
        i += 1
    if is_true == 1:
        print('登录成功')
    else:
        print('用户名或密码有误')
    #user_login_tuple = (user_login,password_login)
    # if user_login_tuple in user_list:
    #     print('登录成功')
    # else:
    #     print('用户名或密码有误')


def exit():
    import sys
    if len(new_user_list) > 0:

        save_data()
    print('谢谢使用')
    sys.exit()

def save_data():
    import pymysql
    db = pymysql.connect('127.0.0.1','root','123','student_info_library')
    cursor = db.cursor()
    sql = 'insert into student_table (username,password) values (%s,%s);'
    i = 0
    while i < len(new_user_list):
        user_info = new_user_list[i]
        cursor.execute(sql,user_info)

        i += 1

    db.commit()

    cursor.close()
    db.close()
    print(new_user_list)
    print('新数据添加完成!断开数据库连接')




user_list = []
#存储新的用户信息
new_user_list = []
database_connect()
while True:
    menu()
    num = input('请输入功能选项:')
    if num == '1':
        register()
    elif num == '2':
        login()
    elif num == '3':

        exit()
    else:
        print('输入有误,请重新输入')

2、专业版本

"""
1.什么时候取数据?
    程序最开始的地方,将所有数据,从数据库中提取出来,存储到列表中
2.什么时候存储数据?
    退出时候,存储数据


"""
import sys
import pymysql
#存储所有用户信息的列表
user_list = []
#存储新用户信息的列表
new_user_list = []

#定义从数据库中加载数据的函数(查询操作)
def loadData():
    #1.链接数据库
    db = pymysql.connect('localhost','root','123','db2')
    #2.创建游标
    cursor = db.cursor()
    #3.sql
    sql = 'select * from user'
    #4.执行sql
    cursor.execute(sql)
    #将查询到的所有数据存储在all_users中
    all_users = cursor.fetchall()
    print(all_users)
    #5.将数据加入到列表
    i = 0
    while i < len(all_users):
        #将所有用户信息,循环存储到列表中
        user_list.append(all_users[i])
        i += 1
    print(user_list)
    #6.关闭游标,数据库
    cursor.close()
    db.close()

#展示主菜单的函数
def showMenu():
    print('1、注册\n2、登录\n3、退出')
#注册功能的函数
def register():
    user_register = input('请输入要注册的用户名')
    password_register = input('请输入要注册的密码')
    # 小元组,类似列表,但是不能修改
    user_tuple = (user_register, password_register)
    #记录是否已经被注册
    has_register = 0
    #遍历现有存储用户信息的列表
    i = 0#0表示没有被注册,如果状态改为1,表示已经被注册
    while i < len(user_list):
        #通过索引值获取到用户对应的元组数据  (用户名,密码)
        user_t = user_list[i]
        #判断输入的用户名,在列表中已经存在
        if user_register in user_t:
            #修改状态,表示已经被注册
            has_register = 1
        i += 1
    if has_register == 0:
        # 将小元组看成一个元素,存储到列表中
        new_user_list.append(user_tuple)
        print('注册成功')
    else:
        print('当前用户名已存在')
    print(user_list)
#登录功能的函数
def login():
    user_login = input('请输入之前注册的用户名')
    password_login = input('请输入之前注册的密码')
    #定义一个变量用来表示是否应该登录成功
    is_true = 0#0表示登录不成功
    i = 0
    while i < len(user_list):
        if user_login in user_list[i] and password_login in user_list[i]:
            #修改状态,表示登录成功
            is_true = 1
        i += 1
    if is_true == 1:
        print('登录成功')
    else:
        print('用户名或密码有误')
    # 将输入的用户名跟密码存储到元素中
    # user_login_tuple = (user_login, password_login)
    # 判断操作
    # if user_login_tuple in user_list:
    #     print('登录成功')
    # else:
    #     print('用户名或者密码有误')
#将新注册用户信息,存储到数据库
def saveData():
    # 1.链接数据库
    db = pymysql.connect('localhost', 'root', '123', 'db2')
    # 2.创建游标
    cursor = db.cursor()
    # 3.sql
    sql = 'insert into user (name,password) values (%s,%s)'
    # 4.执行sql
    i = 0
    while i < len(new_user_list):
        user = new_user_list[i]
        cursor.execute(sql, user)
        i += 1
    #commit
    db.commit()
    #关闭游标、数据库
    cursor.close()
    db.close()

#退出功能的函数
def sys_exit():
    #如果新用户列表有数据,才执行写入数据库操作,否则不执行
    if len(new_user_list) > 0:
        saveData()
    print('谢谢使用')
    sys.exit()
#调用从数据库中加载数据的函数
loadData()
while True:
    #调用展示主菜单功能
    showMenu()
    choice = input('请选择1-3:')
    if choice == '1':
        #调用注册函数
        register()
    elif choice == '2':
        #调用登录函数
        login()
    elif choice == '3':
        #调用退出函数
        sys_exit()
    else:
        print('输入有误,请重新输入')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值