Python 连接mysql数据实现简单的登录和注册功能。

使用python 连接mysql数据实现简单的登录,注册功能。

在本篇博客中,我们将学习如何使用Python连接MySQL数据库,并实现基本的登录和注册功能。我们将使用Python的pymysql库来连接MySQL数据库,并编写函数来实现用户的注册和登录功能。

首先,我们需要创建一个数据库连接函数connectdb,该函数接收一个SQL查询作为参数,然后建立与MySQL数据库的连接,并执行SQL查询。首先默认你已创建了user表。

创建数据库连接:

#导入需要的包
import re  # 正则表达式
from re import search, split, fullmatch
import pymysql

def connectdb(sql):
    # 建立Mysql数据库连接
    db = pymysql.connect(
        host='localhost',  # 数据库地址 可远程,可本地
        port=3306,  # 数据库端口号
        user='root',  # 用户名
        passwd='123456',  # 密码
        db='xxx数据库',  # 需要连接的数据库
        charset='utf8'  # 配置编码
    )
    cursor = db.cursor()
    sqls = sql  # 查询历史数据
    cursor.execute(sqls)  # 执行sql
    results = cursor.fetchall()  # 获取sql的每条数据
    db.commit()
    cursor.close()  # 关闭游标
    db.close()  # 关闭数据库连接
    return results

接下来,我们将编写注册功能register(),该函数将会对用户输入的用户名、电话号码和电子邮箱进行校验,并将校验结果存储在数据库中。如果输入的信息有效且未被注册过,则会将用户信息插入到数据库中,并返回注册成功的消息。

实现注册功能:

# 实现注册功能
def register():
    userId = 'root'
    password = '123456'
    gender = '0' #0:男,1:女
    phone = '13012345678'
    email = 'lisi_1234@qq.org'
    if fullmatch(r'[a-zA-Z\d_]{1,10}', userId): #校验一下用户名
        print('用户名有效')
        names = []
        u_sql = "select name from user "
        username = connectdb(u_sql)
        for u in username:
            names.append(u[0])
        if userId in names:
            print('该名称已被注册,请重新输入!')
            date = {
                'msg': '该名称已被注册,请重新输入!'
            }
            return date

        else:
            if fullmatch(r'1[3-9]\d{9}', phone): #校验一下号码以1开头的11位数字
                print('电话号码有效')
                phones = []
                p_sql = "select phone from user "
                userphone = connectdb(p_sql)
                for p in userphone:
                    phones.append(p[0])
                if phone in phones:
                    print('该号码已被注册,请重新输入!')
                    date = {
                        'msg': '该号码已被注册,请重新输入!'
                    }
                    return date
                else:
                    #校验一下邮箱以(cn/org/com)结尾
                    if re.match(
                           r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(com|org|cn)$',
                            email):
                        print('电子邮箱有效')
                        emails = []
                        esql = "select email from user "
                        useremail = connectdb(esql)
                        for e in useremail:
                            emails.append(e[0])
                        if phone in emails:
                            print('该邮箱已被注册,请重新输入!')
                            date = {
                                'msg': '该邮箱已被注册,请重新输入!'
                            }
                            return date
                        else:
                            sql = "INSERT INTO user (name, gender,phone,email,password) VALUES ('{}','{}','{}','{}','{}')".format(
                                userId, gender, phone, email, password)
                            connectdb(sql)
                            print('注册成功')
                            date = {
                                'msg': '注册成功!'
                            }
                            return date
                    else:
                        print('电子邮箱无效')
                        date = {
                            'msg': '输入的电子邮箱无效,请重新输入!'
                        }
                        return date
            else:
                print('电话号码无效')
                date = {
                    'msg': '输入的电话号码无效,请重新输入!'
                }
                return date
    else:
        print('用户名无效')
        date = {
            'msg': '输入的用户名无效,请重新输入!'
        }
        return date

然后,我们将编写登录功能login(),该函数首先会查询数据库中是否存在输入的用户名,如果存在则会校验密码是否正确,并返回相应的登录状态消息。

实现登录功能:

#实现登录功能
def login():
    userId = 'root'
    password = '123456'
    sql = 'select name,password from user where name = "{}"'.format(userId)
    up = connectdb(sql)

    if len(up) != 0:
        user_name = up[0][0]
        user_pwd = up[0][1]
    else:
        print('暂无该用户,请前往注册')
        return
    if userId == user_name and password == user_pwd:
        date = {
            'code': 200,
            'msg': '登录成功!'
        }
        print('登录成功')
        return date
    elif userId != user_name and password == user_pwd:
        date = {
            'code': 403,
            'msg': '用户名不正确,请重新输入!'
        }
        print('用户名不正确')
        return date
    elif userId == user_name and password != user_pwd:
        date = {
            'code': 403,
            'msg': '密码不正确,请重新输入!'
        }
        print('密码不正确')
        return date
    else:
        date = {
            'code': 404,
            'msg': '用户名和密码不正确,请重新输入!'
        }
        print('用户名和密码不正确,请重新输入!')
        return date

在这个过程中,我们将使用Python的正则表达式来校验用户输入的信息,并利用pymysql库来连接MySQL数据库进行数据的存取。

通过以上步骤,我们将学习到如何使用Python连接MySQL数据库,并实现基本的登录和注册功能。同时,我们也会学习到如何在Python中进行数据库操作,以及如何使用正则表达式对用户输入的信息进行校验。

希望这篇博客能够帮助大家更好地理解Python连接MySQL数据库,并实现基本的用户登录和注册功能。谢谢阅读!上述代码均是完整代码,欢迎指正,一起学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值