python模块之mysql数据库连接和hasllib加密

mysql数据库连接

其中对于数据库连主要使用mysql数据库,安装了navicat对数据库进行管理。在python中使用内置模块mysql.connector。大概流程是:

  1. 建立数据库连接;
  2. 引用游标cursor;
  3. 使用游标execute数据库操作,如果是查询语句可以使用fetchall(),fetchone()等方法操作,如果是插入语句和创建表语句等则需要commit()。
  4. 关闭游标;
  5. 关闭数据库连接

然后通过navicat查看我数据库操作是否成功。

import mysql.connector

conn = mysql.connector.connect(host='127.0.0.1', port=3306, user='root', passwd='****', db='library', charset='utf8')
cur = conn.cursor()
##创建数据表
cur.execute("""
create table if not EXISTS account(
  accid int(10) PRIMARY KEY ,
  money int(10)
)
""")
###插入两行数据
cur.execute('insert into account(accid,money) VALUES (1,110)')
cur.execute('insert into account(accid,money) VALUES (2,10)')
conn.commit()

cur.close()
conn.close()

hashlib模块实现用户密码加密:

 

对于这个模块主要实现功能加密,可以对用户输入信息等进行加密。有md5()和sha1()方法等。

import hashlib

md5 = hashlib.md5()
md5.update(s.encode('utf-8'))
md5.update(s.encode('utf-8'))
print(md5.hexdigest())

sha1使用方法同md5()

在对用户密码等进行加密时,如果是密码简单的如123,那么有可能通过加密后的反推出来,所以加密时可以进行“加盐”——通过加入用户名或者随机字符等。

连接数据库,实现简单的用户注册、登陆功能:

 

import random
import hashlib
#连接数据库
def my_db(sql):
    import mysql.connector
    conn=mysql.connector.connect(host='127.0.0.1',port=3306,user='root',password='12345',db='library',charset='utf8')
    cur=conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS USER (username VARCHAR(20)  PRIMARY KEY, password VARCHAR(40))")
    conn.commit()
    cur.execute(sql)
    if sql.strip()[:6].upper()=='SELECT':
        res=cur.fetchall()
    else:
        conn.commit()
        res='ok'
    cur.close()
    conn.close()
    return res
def get_md5(s):
    md5=hashlib.md5()
    md5.update(s.encode('utf-8'))
    return md5.hexdigest()
#登陆
def reg():
    username=input('please input yourname:').strip()
    sql='select * from user where username="%s"'% username
    res=my_db(sql)
    # print('ok')
    if res:
        print('the username already exists ,please change your nanme')
    else:
        password = input('please input your password ').strip()
        cpsw=input('please confirm your password:').strip()
        if password==cpsw:
            psw = get_md5(password + 'skyu' + username)#加盐
            insert_sql = 'insert into user (username,password) values("%s","%s");' % (username, psw)
            my_db(insert_sql)
            print('注册成功')
        else:
            print("两次输入密码不同,请重新输入")

#登陆
def log():
    username=input('please input yourname:').strip()
    password=input('please input your password ').strip()
    cpsw=input('please confirm your password').strip()
    if password==cpsw:
        psw = get_md5(password + 'skyu' + username)
        sql = 'select * from user where username="%s" and password="%s"' % (username, psw)
        res = my_db(sql)
        if res:
            print('登陆成功')
        else:
            print('用户名和密码错误')
    else:
        print('两次输入密码不同')


reg()
# log()

 

转载于:https://www.cnblogs.com/celine-huang/p/10696645.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值