mysql数据库连接
其中对于数据库连主要使用mysql数据库,安装了navicat对数据库进行管理。在python中使用内置模块mysql.connector。大概流程是:
- 建立数据库连接;
- 引用游标cursor;
- 使用游标execute数据库操作,如果是查询语句可以使用fetchall(),fetchone()等方法操作,如果是插入语句和创建表语句等则需要commit()。
- 关闭游标;
- 关闭数据库连接
然后通过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()