像sqlalchemy的声明基或django的模型这样的结构在您的项目中!

prettyrecord的Python项目详细描述


prettyrecord允许您以声明方式定义数据结构, 类似于sqlalchemy的声明性基或django的模型。为了达到目标, prettyrecord使用python的描述符和元类机制。

用法

  • 定义新的结构、子类记录或派生类并用字段填充,例如:

    from prettyrecord import Record
    
    
    class DummyRecord(Record, some_trait=False):
        field1 = Field(required=True, default_value='')
        field2 = Field(default_value=0)
        field3 = ListField(constraint=lambda value: -5 < value < 5)
    
    
    dr = DummyRecord(field1='foo', field3=[-2, 3, 1, 0, 4)
    print(dr.field1)          # shows 'foo'
    print(dr.__some_trait__)  # shows 'False'
    
  • 定义新字段、子类字段、记录字段、列表字段或派生类,例如:

    from prettyrecord import Field
    
    
    class Integer(Field):
        def normalize(self, value):
            value = super(Integer, self).normalize(value)
            return int(value)
    
  • 若要更改结构的创建过程,请子类化metarecord并为其定义新基类,例如:

    from prettyrecord.record import Record, MetaRecord
    
    
    class MetaMyRecord(MetaRecord):
        def __new__(mcs, name, bases, attrs, **kwargs):
            # your code here - remember to call super().__new__
    
        def __init__(cls, name, bases, attrs, **kwargs):
            # your code here - remember to call super().__init__
    
    
    class MyRecord(Record, metaclass=MetaMyRecord):
        pass
    

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Jena获取类上的OWL限制   我需要用javadoc记录每一个方法还是java中的“main”方法?   ssl我的Java密钥库中需要什么?   java如何在安卓中实现视图寻呼机适配器?   java LibreOffice 4.4.3在不同服务器上使用jodconverter访问文档   Selenium Webdriver(Java)脚本之间的时间延迟   混合使用路径参数和请求参数的java Rest API   爪哇超级。基类中的toString()方法?   java IntelliJ Idea 2019.2与NPW崩溃   java replaceAll不适用于以下查询   java递归相关:两个数的乘积   java在屏幕/活动之间切换,无需按钮   java试图在GridBagLayout中对齐JcheckBox   java安全远程密码协议SRP和Spring安全