mysql數據庫鏈接python
其中對於數據庫連主要使用mysql數據庫,安裝了navicat對數據庫進行管理。在python中使用內置模塊mysql.connector。大概流程是:mysql
- 創建數據庫鏈接;
- 引用遊標cursor;
- 使用遊標execute數據庫操做,若是是查詢語句能夠使用fetchall(),fetchone()等方法操做,若是是插入語句和建立表語句等則須要commit()。
- 關閉遊標;
- 關閉數據庫鏈接
而後經過navicat查看我數據庫操做是否成功。sql
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()方法等。dom
import hashlib md5 = hashlib.md5() md5.update(s.encode('utf-8')) md5.update(s.encode('utf-8')) print(md5.hexdigest())
sha1使用方法同md5()fetch
在對用戶密碼等進行加密時,若是是密碼簡單的如123,那麼有可能經過加密後的反推出來,因此加密時能夠進行「加鹽」——經過加入用戶名或者隨機字符等。加密
鏈接數據庫,實現簡單的用戶註冊、登錄功能:spa
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()