python语言 如何做到聊天室登录连接数据库

聊天室是通信工具,任何人都可以注册,注册好了下回人可以登录并载入相关信息,作为新手,如何把聊天室登录功能做到连接数据库就很重要,这里简单介绍一下,连接的数据库为MySQL为例
先写一个mysqlpython 文件,用模块pymysql连接数据库,操作数据库,代码见如下:
import pymysql

class MysqlPython:
    def __init__(self,host='localhost',
                    user='root',
                    password='123456',
                    database='db5',
                    charset='utf8',
                    port=3306):
        self.host=host
        self.user=user
        self.password=password
        self.database=database
        self.charset=charset
        self.port=port

    #定义两个方法,创建两个对象
    def open(self):
        self.db=pymysql.connect(host=self.host,
                            user=self.user,
                            password=self.password,
                            database=self.database,
                            charset=self.charset,
                            port=self.port)
        self.cur=self.db.cursor()


    def close(self):
        self.cur.close()
        self.db.close()


    def Execution(self,sql,L=[]):
        self.open()
        self.cur.execute(sql,L)
        self.db.commit()
        self.close()

    def Fetchall(self,sql,L=[]):
        self.open()
        self.cur.execute(sql,L)
        #取出查询结果
        result=self.cur.fetchall()
        self.close()
        return result

然后写登录功能,导入上面模块文件,达到登录信息用数据库存储与查询,具体代码见下面:

from mysqlpython import MysqlPython 
from hashlib import sha1

#注册用户名功能
def register():   
    #创建数据库连接对象
    sqlh=MysqlPython()
    while True:
        uname=input('请输入注册用户名:')
        if not uname:
            print('用户名不能为空')
            continue
        #查询数据库中用户表,查出结果为元祖(大元祖套小元组)
        sele='select name from user where name=%s'
        l=list(sqlh.Fetchall(sele,[uname]))
        if len(l)!=0:
            #元组中第一项为姓名
            print('此用户名已注册,请重新注册!')
            continue 
        else:
            pwd1=input('请输入密码:')
            pwd2=input('请再次输入密码:')
            #注册成功后存入到数据库表中(表字段为姓名,密码)
            #输入密码,让用户注册

            if pwd1==pwd2:
                #把密码加密存入数据库
                #1创建sha1加密对象
                s=sha1()
        #2.加密,参数一定要为bytes数据类型
        #加密只能对字节流加密,不能对字符串加密
                s.update(pwd1.encode('utf-8'))
                #3.返回十六进制加密结果
                pwd=s.hexdigest()
                #注册成功后存入到数据库表中(表字段为姓名,密码)
                ins='insert into user values(%s,%s)'
                sqlh.Execution(ins,[uname,pwd])
                print('注册成功')
                return
            else:
                print('两次密码不一致')
        
         
        
   
#登录验证功能
def logintest():#验证用户名密码输入正确否,可否登入
    sqlh=MysqlPython()
    count=0
    while count<4:
        uname = input('请输入用户名:')
        pwd = input('请输入密码:')
        count+=1
        #到数据库查询该用户密码,查看是否为空
        sele = 'select password from user where name = %s'
        r=sqlh.Fetchall(sele,[uname])
        s = sha1()
        s.update(pwd.encode('utf-8'))
        pwd = s.hexdigest()

        if len(r) == 0:
            print('用户名错误')
        elif pwd == r[0][0]:
            print('登录成功')
            return uname
        else:
            print('密码错误')
    else:
        print('输错超过三次,停止输入')
        return 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值