Python写的数据抽象层

python本身没有对mysql的支持,得依赖附加的库 http://mysql-python.sourceforge.net 。很多框架采用了这个库,比如adodb,django等。不过我倾向于自己写这些东西,所以小研究了一下。 mysql-python 有两个对象 MySQLdb _mysql 这里是介绍http://mysql-python.sourceforge.net/MySQLdb.html,我使用的是 MySQLdb 对象

 

#!/D:\python25\python.exe
import MySQLdb
 
class Mysql(object):
    handle = ''
    query = ''
    exectime = 0
    effected = 0
 
    def __init__( self , hostname , username , password , database ):
        db = MySQLdb.connect( host = hostname , user = username , passwd = password , db = database )
        self.handle = db.cursor()
        
    def query( self , sql = '' ):
        return self.handle.execute( sql )
 
    def fetch( self , sql = '' ):
        self.handle.execute( sql )
        rs = self.handle.fetchone()
        count = 0
        result = {}
        for colnum in self.handle.description:
            result[colnum[0]] = rs[count]
            count += 1
        return result
    
    def fetchAll( self , sql = '' ):
        self.handle.execute( sql )
        result = {}
        bigcount = 0
        for recordline in self.handle.fetchall():
            littlecount = 0
            result[bigcount] = {}
            for colnum in self.handle.description:
                result[bigcount][colnum[0]] = recordline[littlecount]
                littlecount += 1
            bigcount += 1
        return result
 
    def insertID( self ):
          self.handle.execute("SELECT LAST_INSERT_ID() AS lid")
          rs = self.handle.fetchone()
          return rs[0]
 
    def close( self ):
          self.handle.close()
          pass
#DEMO
db = Mysql('localhost','root','123456','frame')
db.fetchAll('select * from user')
#rs = db.fetchAll('select * from user')
#sql = "INSERT INTO tags (module,fid,name,note,`order`) VALUE ('test',1,'fd','ds',1)"
#db.query(sql)
#print db.insertID()

 

你可能感兴趣的:(sql,.net,mysql,python,django)