封裝 觀察前面的文件發現,除了sql語句及參數不同,其它語句都是一樣的 創建MysqlHelper.py文件,定義類 添加 創建testInsertWrap.py文件,使用封裝好的幫助類完成插入操作 查詢一個 創建testGetOneWrap.py文件,使用封裝好的幫助類完成查詢最新一行數據操作 實 ...
封裝
- 觀察前面的文件發現,除了sql語句及參數不同,其它語句都是一樣的
- 創建MysqlHelper.py文件,定義類
#encoding=utf8 import MySQLdb class MysqlHelper(): def __init__(self,host,port,db,user,passwd,charset='utf8'): self.host=host self.port=port self.db=db self.user=user self.passwd=passwd self.charset=charset def connect(self): self.conn=MySQLdb.connect(host=self.host,port=self.port,db=self.db,user=self.user,passwd=self.passwd,charset=self.charset) self.cursor=self.conn.cursor() def close(self): self.cursor.close() self.conn.close() def get_one(self,sql,params=()): result=None try: self.connect() self.cursor.execute(sql, params) result = self.cursor.fetchone() self.close() except Exception, e: print e.message return result def get_all(self,sql,params=()): list=() try: self.connect() self.cursor.execute(sql,params) list=self.cursor.fetchall() self.close() except Exception,e: print e.message return list def insert(self,sql,params=()): return self.__edit(sql,params) def update(self, sql, params=()): return self.__edit(sql, params) def delete(self, sql, params=()): return self.__edit(sql, params) def __edit(self,sql,params): count=0 try: self.connect() count=self.cursor.execute(sql,params) self.conn.commit() self.close() except Exception,e: print e.message return count
添加
- 創建testInsertWrap.py文件,使用封裝好的幫助類完成插入操作
#encoding=utf8 from MysqlHelper import * sql='insert into students(sname,gender) values(%s,%s)' sname=raw_input("請輸入用戶名:") gender=raw_input("請輸入性別,1為男,0為女") params=[sname,bool(gender)] mysqlHelper=MysqlHelper('localhost',3306,'test1','root','mysql') count=mysqlHelper.insert(sql,params) if count==1: print 'ok' else: print 'error'
查詢一個
- 創建testGetOneWrap.py文件,使用封裝好的幫助類完成查詢最新一行數據操作
#encoding=utf8 from MysqlHelper import * sql='select sname,gender from students order by id desc' helper=MysqlHelper('localhost',3306,'test1','root','mysql') one=helper.get_one(sql) print one
實例:用戶登錄
創建用戶表userinfos
- 表結構如下
- id
- uname
- upwd
- isdelete
- 註意:需要對密碼進行加密
- 如果使用md5加密,則密碼包含32個字元
- 如果使用sha1加密,則密碼包含40個字元,推薦使用這種方式
create table userinfos( id int primary key auto_increment, uname varchar(20), upwd char(40), isdelete bit default 0 );
加入測試數據
- 插入如下數據,用戶名為123,密碼為123,這是sha1加密後的值
insert into userinfos values(0,'123','40bd001563085fc35165329ea1ff5c5ecbdbbeef',0);
接收輸入並驗證
- 創建testLogin.py文件,引入hashlib模塊、MysqlHelper模塊
- 接收輸入
- 根據用戶名查詢,如果未查到則提示用戶名不存在
- 如果查到則匹配密碼是否相等,如果相等則提示登錄成功
- 如果不相等則提示密碼錯誤
#encoding=utf-8 from MysqlHelper import MysqlHelper from hashlib import sha1 sname=raw_input("請輸入用戶名:") spwd=raw_input("請輸入密碼:") s1=sha1() s1.update(spwd) spwdSha1=s1.hexdigest() sql="select upwd from userinfos where uname=%s" params=[sname] sqlhelper=MysqlHelper('localhost',3306,'test1','root','mysql') userinfo=sqlhelper.get_one(sql,params) if userinfo==None: print '用戶名錯誤' elif userinfo[0]==spwdSha1: print '登錄成功' else: print '密碼錯誤'