Python - python操作mysql完成注册登录案例

流程:

注册:1.从用户手里拿到数据 —>2.判断数据是否符合要求—>3.不符合就要求用户重新输入—>4.符合那么就执行数据库语句(插入数据),插入前需要对数据库查重—>5.重复返回用户数据已存在—>6.不重复那么就插入成功并告知用户注册成功

登陆:1.从用户手里拿到数据—>2.判断数据是否符合要求—>3.不符合就要求用户重新输入—>4.符合那么就执行数据库语句(查询数据)—>5.有数据判断密码是否正确,密码正确那么就登陆成功—>6.无数据返回用户不存在

import pymysql
import re
import hashlib

# 建立通道
db = pymysql.connect(host="127.0.0.1", user="root", password="12345678",
                     database="cxtest")
# 创建游标
cursor = db.cursor()
md5 = hashlib.md5()


# 注册方法
def register():
    telephone = input('请输入手机号:')
    password = input('请输入密码(数字字母下划线6-12位):')
    # 1.用正则检验用户输入是否合法
    if not (re.match('1[3-8][0-9]{9}$', telephone) and re.match('\w{6,12}$', password)):
        print('请输入正确的用户名或密码!')
        return
    # 2.查询数据库中手机号是否已经被注册
    sql = 'select telephone from use_info where telephone = "{}"'.format(telephone)
    cursor.execute(sql)
    if cursor.rowcount:
        print('该手机号已注册!')
        return
    # md5加密
    md5.update(password.encode('utf8'))
    password = md5.hexdigest()
    try:
        # print(type(telephone), type(password))
        sql = 'insert into use_info values("{}","{}")'.format(telephone, password)
        cursor.execute(sql)
        db.commit()
        print("注册成功")
    except:
        print('注册失败!')
    finally:
        # 关闭游标
        db.close()


def login():
    # 输入用户名和密码
    telephone = input('请输入手机号:')
    password = input('请输入密码(数字字母下划线6-12位):')
    if not (re.match('1[3-8][0-9]{9}$', telephone) and re.match('\w{6,12}$', password)):
        print('请输入正确的用户名或密码!')
        return
    sql = 'select telephone,password from use_info where telephone = "{}"'.format(telephone)
    cursor.execute(sql)
    if not cursor.rowcount:
        print("用户不存在")
        return
    md5.update(password.encode("utf-8"))
    password = md5.hexdigest()
    if cursor.fetchone()[1] != password:
        print("请输入正确的密码")
        return
    print("登陆成功")


if __name__ == '__main__':
    while True:
        print('请选择您的操作:')
        print('1.注册')
        print('2.登陆')
        print('0.退出')
        choose = input('请输入您的选择(1,2,0):')
        if choose == '1':
            register()
            print('注册成功,即将退出')
            break
        elif choose == '2':
            login()
            print('登陆成功,即将退出')
            break
        elif choose == '0':
            break

需要注意的情况是: cursor.execute(sql)执行sql语句时,应该是最容易报错的地方,写代码是需要先注意自己数据表的数据类型等。

知识点:正则 md5 pymysql