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()

 

posted @ 2019-04-12 16:03  黄小鑫Celine  阅读(916)  评论(0编辑  收藏  举报