Python写的数据抽象层
03-30
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()