因为买了本机器学习的书是python的,所以学习了一下python,就用python做了一个简单的web开发的mvc小框架。整个框架分为实体层,数据访问层,业务基类层,Web请求转发层,控制层和视图层。当然也包括一些辅助性工具类。下面一一介绍,希望对跟我一样初学python的有点帮助:
1)实体层
由实体基类和用户实体类组成。实体类可以由数据库自动生成,提供了一个DbTools,可以自动生成规则的实体。下面是实体基类:
import threading
#用户错误类,用于抛出自定义的异常
class CustomError(RuntimeError):
def __init__(self,args):
self.args=args
#实体的基类.
class EntityB:
def __init__(self):
self.CurrFields=[]
#根据属性名获取属性值
def GetValueByName(self,FieldName):
if hasattr(self,FieldName):
return getattr(self,FieldName)
return None
#根据属性名设置属性值
def SetValueByName(self,FieldName,Value):
if hasattr(self,FieldName):
return setattr(self,FieldName,Value)
#定义了该属性,对象可枚举.
def __getitem__(self,key):
if type(key)==type('abc'):
return self.GetValueByName(key)
if type(key)==type(1):
theFld = self.CurrFields[key]
return self.GetValueByName(theFld)
return None
#设置属性值,key可以是索引,也可以是属性名.
def __setitem__(self,key,value):
if type(key)==type('abc'):
self.SetValueByName(key,value)
if type(key)==type(1):
theFld = self.CurrFields[key]
self.SetValueByName(theFld,value)
#获取实体的表名.
def GetTableName(self):
theType = type(self)
if hasattr(theType,'TableName'):
return getattr(theType,'TableName')
return ''
#获取关键字段名
def GetKeyField(self):
theType = type(self)
if hasattr(theType,'KeyField'):
return getattr(theType,'KeyField')
return ''
#获取字段名集合
def GetFields(self):
theType = type(self)
if hasattr(theType,'Fields'):
return getattr(theType,'Fields')
return []
InsertCondition = threading.Condition()
InsertLockSign = False
DeleteCondition = threading.Condition()
DeleteLockSign = False
UpdateAllCondition = threading.Condition()
UpdateAllLockSign = False
InsertSqlName='__InsertSql'
UpdateAllSqlName='__UpdateSql'
DelByPKSqlName='__DelByPKSql'
DefaultSelectSQL='__DefaultSelectSql'
#根据属性名获取类型的属性值。
def _GetClassValue(self,AttrName):
theSelfType = type(self)
theValue =''
if hasattr(theSelfType,AttrName):
theValue=getattr(theSelfType,AttrName)
return theValue
#根据属性名设置类型的属性值.
def _SetClassVa