一个简单的python MVC框架(1)

这篇博客介绍了作者基于Python构建的一个简单的MVC框架,包括实体层、数据访问层、业务基类层、Web请求转发层、控制层和视图层。实体层由实体基类和用户实体类构成,强调了实体类设计的建议,如SQL缓存和避免实体关系固化。还提到了一个辅助工具类用于获取对象的自定义属性。
摘要由CSDN通过智能技术生成

因为买了本机器学习的书是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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值