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中的表描述如下:

时间: 2024-11-10 16:24:57

peewee中创建自己的Field的相关文章

IAR模板--如何在IAR工程中创建和使用模板

如何在IAR工程中创建和使用模板 1.编辑和使用模板的方式: 路径为:Edit -> Code Templates -> Edit Templates  如下图: 创建好模板后,可以在文件中单击右键,选择Insert Template 来插入你编辑好的代码模板. 2.如果创建编辑各种模板: 定义代码模板的语法是:模板<template name> ,<field> [=默认值] <field> ... ... 模板组成元素:模板名称,参数名称和参数的默认值,

本地C代码中创建Java对象

创建Java域的对象就是创建Java类的实例,再调用Java类的构造方法. 以Bitmap的构建为例,Bitmap中并没有Java对象创建的代码及外部能访问的构造方法,所以它的实例化必然是在JNI的c中实现的. BitmapFactory.java中提供了得到Bitmap的方法,时序简化为: BitmapFactory.java ->BitmapFactory.cpp -> GraphicsJNI::createBitmap()  [graphics.cpp] GraphicsJNI::cre

Eclipse RCP 中创建自定义首选项,并能读取首选项中的值

Eclipse RCP的插件中若想自己定义首选项需要扩展扩展点: org.eclipse.core.runtime.preferences //该扩展点用于初始化首选项中的值 org.eclipse.ui.preferencePages//该扩展点用于定义自己的首选项页面 plugin.xml中内容如: Database Preferences挂在WorkFlowBase下,需要在category中填写workFlowBase的ID WorkFlowPreferenceInitializer类,

IAR模板--怎样在IARproject中创建和使用模板

怎样在IARproject中创建和使用模板 1.编辑和使用模板的方式: 路径为:Edit -> Code Templates -> Edit Templates  例如以下图: 创建好模板后.能够在文件里单击右键.选择Insert Template 来插入你编辑好的代码模板. 2.假设创建编辑各种模板: 定义代码模板的语法是:模板<template name> ,<field> [=默认值] <field> ... ... 模板组成元素:模板名称.參数名称和

Django 中创建Model时报以下错误: TypeError: init() missing 1 required positional argument: ‘on_delete’

Django 中创建Model时报以下错误: TypeError: init() missing 1 required positional argument: 'on_delete' 代码如下: from django.db import models Create your models here. class Contract(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(ma

在iOS中创建静态库

如果你作为iOS开发者已经有一段时间,可能会有一套属于自己的类和工具函数,它们在你的大多数项目中被重用. 重用代码的最简单方法是简单的 拷贝/粘贴 源文件.然而,这种方法很快就会成为维护时的噩梦.因为每个app都有自己的一份代码副本,你很难在修复bug或者升级时保证所有副本的同步. 这就是静态库要拯救你的.一个静态库是若干个类,函数,定义和资源的包装,你可以将其打包并很容易的在项目之间共享. 在本教程中,你将用两种方法亲手创建你自己的通用静态库. 为了获得最佳效果,你应该熟悉Objective-

InMemory:在内存中创建临时表和表变量

在Disk-Base数据库中,如果系统频繁地创建和更新临时表,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL Server 2016的内存(Memory-Optimized)数据库中,如果考虑使用内存优化结构来存储临时表,表变量,表值参数的数据,那么将完全消除IO操作的负载消耗,发挥大内存的优势,大幅提高数据库的性能. 在SQL Server 2016中,能够直接创建内存优化的表类型,表变量和表值参数的数据只存储在内存中:不能直接在内存中创建临时表,但是,SQ

php中创建和调用webservice接口示例

这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservice客户端例子,需要的朋友可以参考下 作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice.简单说, WebService就是一些站点开放一些服务出来, 也可以是你自己开发的Service, 也就是一些方法, 通过URL,指定某一个方法名,发出请求,站点里的这个服务(方法),接到

在SQL Server中创建用户角色及授权

参考文献 http://database.51cto.com/art/201009/224075.htm 正文 要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权: 获得准许连接 SQL Server 服务器的权利: 获得访问特定数据库中数据的权利(select, update, delete, create table ...). 假设,我们准备建立一个 dba 数据库帐户,用来管理数据库 mydb. 1. 首先在 SQL Server 服务器级别,创建登陆帐户(cr