python3.6 下连接mysql数据库实现用户登录与注册

在python3.6中连接数据库只能使用pymysql包,安装方法直接通过pip install pymysql安装即可,较为方便。
初学者一定要做的便是用户的注册与登录,同时牵涉到数据库的相关操作,可以利用Navicat建立一个简单的数据库,在里面更新、插入一些数据。之后写python文件对数据库进行操作,我们可以写一个MysqlHelp.py文件帮助我们访问、操作数据库,更为方便。代码如下:

#coding=utf-8
import pymysql

class MysqlHelper:
    def __init__(self,host='localhost',port=3306,db='test01',user='root',passwd='wangbo123',charset='utf8'):
        self.conn=pymysql.connect(host=host,port=port,db=db,user=user,passwd=passwd,charset=charset)

    def insert(self,sql,params):
        return self.__cud(sql,params)

    def update(self,sql,params):
        return self.__cud(sql,params)

    def delete(self,sql,params):
        return self.__cud(sql,params)

    def __cud(self,sql,params=[]):
        try:
            #用来获得python执行Mysql命令的方法,也就是我们所说的操作游标
            #cursor 方法将我们引入另外一个主题:游标对象。通过游标扫行SQL 查询并检查结果。
            #游标连接支持更多的方法,而且可能在程序中更好用。
            cs1 = self.conn.cursor()
            #真正执行MySQL语句
            rows=cs1.execute(sql, params)
            self.conn.commit()
            #完成插入并且做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到文件中。
            cs1.close()
            self.conn.close()
            return rows #影响到了哪行
        except Exception as e:
            print (e)
            self.conn.rollback()

    def fetchone(self, sql, params=[] ):
        #一次只返回一行查询到的数据
        try:
            cs1 = self.conn.cursor()
            cs1.execute(sql , params)
            row = cs1.fetchone()
            #把查询的结果集中的下一行保存为序列
            #print(row)
            #row是查询的值
            cs1.close()
            self.conn.close()
            return row
        except Exception as e:
            print("None", e)

    def fetchall(self,sql,params):
        #接收全部的返回结果行
        #返回查询到的全部结果值
        try:
            cs1=self.conn.cursor()
            cs1.execute(sql,params)
            rows=cs1.fetchall()
            cs1.close()
            self.conn.close()

            return rows
        except Exception as e:
            print("None",e)

这段代码里的MysqlHelp类封装了对数据库的常用操作,连接数据库、查找数据、修改表等(可以自行添加)。
接下来要注意创建好数据库以及表:

create table userinfos(
id int primary key auto_increment,
uname varchar(20),
upwd char(40),
isdelete bit default 0
);

以上是表的创建,也可以在可视化下操作。之后加入数据:

insert into userinfos values(0,'123','40bd001563085fc35165329ea1ff5c5ecbdbbeef',0);

加入的密码值是123的sha1加密后的值,因为存入密码是肯定要加密的!之后我们就可以写python的实际操作代码,来对数据库test01进行操作。
要引入哈希算法的模块进行数据加密,加密之后用加密的数据与数据库里的数据进行对比,如果相同,则证明登陆成功。注册的操作便是利用insert方法对数据库插入数据。总体理解较为简单。代码如下:

#coding=utf-8
from MysqlHelper import MysqlHelper
from hashlib import sha1

#注册
uname=input("请输入用户名:")
upwd=input("请输入密码:")

s1 = sha1()
#初始化sha1对象
s1.update(upwd.encode('utf-8'))
#对s1进行更新
upwd2 = s1.hexdigest()
#加密

sql = 'insert into userinfos(username, upwd) values(%s,%s)'
#sql语句 这是小写
params = [uname,upwd2]
#将插入的值存入列表中

helper = MysqlHelper()
#将sql语句以及值传给对象中的方法
row = helper.insert(sql,params)
#返回的是受到改变的行
print (row)

#登录
uname = input("请输入用户名:")
upwd = input("请输入密码:")

s1 = sha1()
s1.update(upwd.encode())
upwd2 = s1.hexdigest()

sql = "SELECT upwd from userinfos where username = %s "
#大写也可以
params = [uname]

helper = MysqlHelper()
result = helper.fetchone(sql, params)

if result == None:
    print ('用户名错误')
elif result[0] == upwd2:
    print ('登录成功')
else:
    print ('密码错误')

由此便实现了简单的登录与注册,是web应用的基础。

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangbowj123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值