在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应用的基础。

用python和mysql做注册登录系统_python3.6 下连接mysql数据库实现用户登录与注册相关推荐

  1. Spring Boot 案例:连接后台数据库实现用户登录

    文章目录 一.运行效果 二.涉及知识点 三.项目实现步骤 (一)在博客数据库里创建用户表 (二)创建Spring Boot Web项目Login (三)创建用户实体类User (四)创建用户映射器配置 ...

  2. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

  3. qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤

    目的: 本文实现QT登录界面,输入账号和密码后,系统连接Oracle数据进行判断账号和密码(MD5加密)是否和数据库一致,如果一致则提示登录成功. 开发环境:Windows10+QT5.14.2+Or ...

  4. Win10 64位系统Qt5.9.7连接神通数据库7.0

    Win10 64位系统Qt5.9.7连接神通数据库7.0 因为国产化的原因,项目后期数据库要使用神通数据库,将自己安装测试过程记录如下,以便后期自查: 当前系统环境: Qt版本: 5.9.7 神通数据 ...

  5. linux mysql 运行sql文件命令大全_linux下执行mysql的sql文件

    linux下执行mysql的sql文件 mysql -uroot -proot 进入到mysql 然后执行source /var/ftp/pub/sogoodsoft.sql; 即可. www.2ct ...

  6. Windows 下连接mysql工具NavicatForMysql

    Windows 下连接mysql工具NavicatForMysql 一.软件介绍 Navicat for MySQL是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖 ...

  7. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法

    ubuntu下连接mysql出现Access denied for user 'rose'@'localhost' (using password: NO)的解决方法 参考文章: (1)ubuntu下 ...

  8. Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能

    Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能 在学习笔记01里,我们利用跨域打通了前端的Vue与后端的Spring Boot,实现了用户登录功能,但是后台的登录控制器在 ...

  9. sqlserver数据库限制用户登录失败次数

    gpedit.msc 设定 失败三次之后锁定30分钟,30分钟重置一次 使用数据库的账户登录测试 故意输错三次密码后,提示 解锁锁定的账户 ALTER LOGIN jason WITH PASSWOR ...

最新文章

  1. 敏捷冲刺每日报告四(Java-Team)
  2. 微软称电脑系统识别能力已经超越了人类
  3. csrutil是什么_经常在程序里见到 Util ,想知道它一般是指什么意思?
  4. 案例 github_2019年12月Github上最热门的Java开源项目,速来围观!
  5. mvc mysql linq_MVC3+Linq to sql 显示数据库中数据表的数据
  6. 计算机网络之网络概述:6、TCP/IP模型和5层参考模型
  7. Sentinel云原生K8S部署实
  8. 计科1501韩猛实验8
  9. java读取百万条记录出错_如何实现导出百万条数据到EXCEL中不报OOM异常?
  10. HDU 6602 Longest Subarray (线段树)
  11. 云计算能给你带来什么?
  12. fastjson 1.1.31 发布,Java 的 JSON 库
  13. 计算机专业建设会议纪要,本学期第六次专业建设工作会议纪要
  14. 场景编辑器开发第五天,设计架构重回flash,很多问题不是出在技术上而是策划上
  15. MacOS怎么设置动态桌面,heic动态桌面壁纸怎么用
  16. Flask 项目打包 线上部署
  17. 用python来更改小伙伴的windows开机密码,不给10块不给开机
  18. tortoise-orm 分页码(python)
  19. 树莓派chromium浏览器 kiosk 全屏提示错误
  20. python面试题-如“上海 深圳 深圳 上海“,要求输入一个匹配模式,比如: aabb,判断是否符合

热门文章

  1. 青少年励志经典文库(共10辑,60册)
  2. 物流运输信息管理系统设计与实现
  3. 确认新CEO及首次上市失败,比特大陆成立5年后的危机与未来...
  4. 双系统下ubuntu18.04装拓展显示屏血泪史
  5. 了解《2022年全球及中国汽车碳纤维车轮行业头部企业市场占有率及排名调研报告》
  6. ESP32-CAM 网路与摄像头应用
  7. 你想要的2023年最新最齐springboot计算机毕业设计题目,这里都给你实现了(建议收藏)
  8. whmcs ----应用推荐{内购版}
  9. AI将如何影响程序员的未来,以及如何不被AI所替代。
  10. ZeroC Ice权威指南-学习笔记2——IceBox