zoukankan      html  css  js  c++  java
  • peewee中创建自己的Field

    peewee中创建自己的Field,主要通过继承Field或其子类来完成,

    • 如果有mysql中对应的字段,则将其赋值给db_field即可。这里对set, enum并没有找到通用的字段定义,但是对具体的业务可以进行如GenderField这样的个性化定制。
    • 如果没有,则使用其父类的db_field字段,并定义db_value和python_value两个方法来完成与数据库中数据类型之间的转化 
     1 # 时间戳字段
     2 class TimeStampField(Field):
     3     db_field = 'timestamp'
     4 
     5 class SmallIntegerField(IntegerField):
     6     db_field = 'smallint'
     7 
     8 class PasswordField(FixedCharField):
     9 
    10     def __init__(self, *args, **kwargs):
    11         self.max_length =64
    12         super(PasswordField, self).__init__(max_length=self.max_length, *args, **kwargs)
    13 
    14     def db_value(self, value):
    15         return encrypt(value)
    16 
    17     def python_value(self, value):
    18         return encrypt(value)
    19 # 性别字段
    20 class GenderField(Field):
    21     db_field = 'enum("f", "m")'

     建立表格如下:

     1 class Base(Model):
     2     class Meta:
     3         database = db
     4 
     5 class Person(Base):
     6     name = CharField(max_length=20, default='haha')
     7     intro = TextField(default='')
     8     birth = DateTimeField(default=datetime.now())
     9     Married = BooleanField(default=False)
    10     height = FloatField(default=0)
    11     wight = DoubleField(default=0)
    12     salary = DecimalField(default=0)
    13     Save = BigIntegerField(default=0)
    14     family = SmallIntegerField(default=0)
    15     age = IntegerField(default=0)
    16     username = CharField(max_length=20)
    17     password = PasswordField(default='')
    18     ctime = TimeStampField()
    19     today = DateField(default=datetime.date(datetime.today()))
    20     now = TimeField(default=datetime.today())
    21     secret = BlobField(default='')
    22     gender = GenderField()

    mysql中的表描述如下:

     

  • 相关阅读:
    vs 调试的时候 使用IP地址,局域网的设备可以访问并调试
    jQuery Easing 使用方法及其图解
    win10使用Composer-Setup安装Composer以及使用Composer安装Yii2最新版
    PHP 字符串数组按照拼音排序的问题
    yii2 查询数据库语法
    css禁用鼠标点击事件
    内容显示在HTML页面底端的一些处理方式
    UltraISO制作U盘启动盘
    Swift中使用MPMoviePlayerController实现自定义视频播放器界面
    关于dismissViewControllerAnimated值得注意的一点(deinit)
  • 原文地址:https://www.cnblogs.com/noway-neway/p/5342175.html
Copyright © 2011-2022 走看看