#-------------------------------------------------------------------------------
# Name: 基于web.db模块的数据库操作模块
# Purpose:
#
# Author: Sharekte
#
# Created: 18/09/2010
# Copyright: (c) Sharekte 2010
# Licence: <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python
def main():
pass
if __name__ == '__main__':
main()
import web
con=web.database(dbn='mysql',dburl="localhost",port=3306,db="test",user="root",pw="")
def getSearch(table,findtag='AND',*searchfields,**keydict):
if not searchfields:
findfields='*'
else:
findfields=','.join([str(field) for field in searchfields]) #拼接查询字段
if not keydict:
try:
rsset=con.select(table,what=findfields)
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg: #捕获数据库表或字段不存在的异常,返回None,在调用该函数时须捕获TypeError异常
print msg
return
else:
try:
rsset = con.select(table, where=web.db.sqlwhere(keydict,grouping=findtag),what=findfields)
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg:
print msg
return
return rsset
def getDel(table,findtag='AND',**keydict):
if not keydict:
try:
con.delete(table)
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg:
print msg
else:
try:
con.delete(table,where=web.db.sqlwhere(keydict,grouping=findtag))
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg:
print msg
def getUpdate(table,findtag='AND',**keydict):
'''Handle of DataBase update,keydict must be comprise key of wherekey and values
>>>m={'testid':1}
>>>n={'testname':'nice'}
getUpdate('testtable',wherekey=m,values=n)
OR:
>>>k={'wherekey':{'testid':1},'values':{'testname':'nice'}}
>>>getUpdate('test',**k)
'''
if not keydict:
return
else:
upfields=keydict.get('values')
keyfields=web.db.sqlwhere(keydict.get('wherekey'),grouping=findtag)
try:
con.update(table,keyfields,**upfields)
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg:
print msg
def getInsert(table,**instfields):
'''Do insert data to DataBase,instfields must be a dict,like this:
>>>fields={testid:1,testname:'Jack'}
>>>getInsert('testtable',**fields)'''
if not instfields:
return
else:
try:
con.insert(table,**instfields)
except (con.db_module.OperationalError,con.db_module.ProgrammingError),msg:
print msg