mssqlDataset
import pymssql
class mssqlDatarow(object):
def __init__(self,fields,values):
self.__fields={}
for f,v in zip(fields, values):
self.__fields[f.upper()]=v
self.__values=values
def getValue(self,fieldName):
return self.__fields.get(fieldName.upper())
class mssqlDataset(object):
def __init__(self,cnt):
self.__cnt=cnt
self.rows=None
self.fieldNames=None
def getFieldNameOnSelectAs(self,sqlSelect):
sqlSelect=sqlSelect.strip().upper()
asFix=' as '.upper()
asIndex=sqlSelect.rfind(asFix)
if asIndex<=0: return sqlSelect
sqlSelect=sqlSelect[asIndex+len(asFix):]
return sqlSelect
def query(self,sqlSelect,sqlFrom,sqlWhere=None
,sqlOrder=None,sqlGroup=None,sqlPre=None):
s=sqlSelect.strip()
s=s.split(",")
self.fieldNames=map(self.getFieldNameOnSelectAs,s)
ssql="select %s%s "%(sqlPre+" " if sqlPre else ""
,sqlSelect if sqlSelect else "")
ssql+="\nfrom %s "%(sqlFrom if sqlFrom else "",)
ssql+="\n%s "%("where "+sqlWhere if sqlWhere else "",)
ssql+="\n%s "%("order by "+sqlOrder if sqlOrder else "",)
ssql+="\n%s"%("group by "+sqlGroup if sqlGroup else "",)
cur=self.__cnt.cursor()
cur.execute(ssql)
fetches=cur.fetchall()
cur.close()
self.rows=list()
for fetch in fetches:
self.rows.append(mssqlDatarow(self.fieldNames,fetch))