Peewee – 字段类

Peewee – 字段类

模型类包含一个或多个属性,是Peewee中字段类的对象。基础字段类不直接实例化。Peewee为同等的SQL数据类型定义了不同的子类。

字段类的构造函数有以下参数

序号 构造函数和描述
1 column_name (str) 指定字段的列名。
2 primary_key (bool) 字段是主键。
3 constraints (list) 适用于列的约束列表
4 choices (list) 2-tuples的迭代,将列值映射到显示标签。
5 null (bool) 字段允许NULL。
6 index (bool) 在字段上创建一个索引。
7 unique (bool) 在字段上创建一个唯一索引。
8 Default 默认 值。
9 collation (str) 字段的 排序 名称。
10 help_text (str) 字段的帮助文本,用于元数据。
11 verbose_name (str) 字段的粗略名称,用于元数据目的。

字段类的子类被映射到各种数据库中的相应数据类型,如SQLitePostgreSQL、MySQL等。

数值字段类

以下是Peewee的数字字段类。

序号 字段类别及描述
1 IntegerField 用于存储整数的字段类。
2 BigIntegerField 用于存储大整数的字段类(在SQLite、PostegreSQL和MySQL中分别映射为整数、大整数和大整数类型)。
3 SmallIntegerField 类,用于存储小整数(如果数据库支持)。
4 FloatField 用于存储浮点数的字段类,对应于真实数据类型。
5 DoubleField 用于存储双精度浮点数的字段类,对应于相应SQL数据库中的等效数据类型。
6 DecimalField 用于存储十进制数字的字段类。参数提到如下-
  • max_digits (int) – 要存储的最大数字。
  • decimal_places (int) – 最大精度。
  • auto_round (bool) – 自动舍入数值。

文本字段

在Peewee中可用的文本字段如下。

序号 字段和描述
1 CharField 用于存储字符串的字段类。最多255个字符。相当于SQL的数据类型是varchar。
2 FixedCharField 用于存储固定长度的字符串的字段类。
3 TextField 用于存储文本的字段类。在SQLite和PostgreSQL中映射为TEXT数据类型,在MySQL中映射为longtext。

二进制字段

Peewee中的二进制字段解释如下。

序号 领域和描述
1 BlobField 用于存储二进制数据的字段类。
2 BitField 字段类,用于在64位整数列中存储选项。
3 BigBitField 字段类,用于在二进制大对象(BLOB)中存储任意大的位图。该字段将在必要时增长底层缓冲区。
4 UUIDField 用于存储通用唯一标识符(UUID)对象的字段类。在Postgres中映射到UUID类型。SQLite和MySQL没有UUID类型,它被存储为VARCHAR。

日期和时间字段

Peewee的日期和时间字段如下

序号 字段和描述
1 DateTimeField 用于存储datetime.datetime对象的字段类。接受一个特殊的参数字符串格式,可以对日期时间进行编码。
2 DateField 用于存储datetime.date对象的字段类。接受一个特殊的参数字符串格式来编码日期。
3 TimeField 用于存储datetime.time对象的字段类,接受一个特殊的参数格式来显示编码的时间。

由于SQLite没有DateTime数据类型,这个字段被映射为字符串。

外键字段

这个类用于在两个模型中建立外键关系,从而在数据库中建立各自的表。这个类在实例化时有以下参数

序号 字段和描述
1 model (模型) 要参考的模型。如果设置为’self’,它是一个自我参照的外键。
2 field (字段) 在模型上引用的字段(默认是主键)。
3 backref (str) 用于反向引用的访问器名称。”+”禁用反向引用访问器。
4 on_delete (str) ON DELETE动作。
5 on_update (str) ON UPDATE动作。
6 lazy_load (bool) 当 foreign-key 字段属性被访问时,获取相关对象。如果是FALSE,访问外键字段将返回存储在外键列中的值。

例子

下面是一个外键字段的例子。

from peewee import *

db = SqliteDatabase('mydatabase.db')
class Customer(Model):
   id=IntegerField(primary_key=True)
   name = TextField()
   address = TextField()
   phone = IntegerField()
   class Meta:
      database=db
      db_table='Customers'

class Invoice(Model):
   id=IntegerField(primary_key=True)
   invno=IntegerField()
   amount=IntegerField()
   custid=ForeignKeyField(Customer, backref='Invoices')
   class Meta:
      database=db
      db_table='Invoices'

db.create_tables([Customer, Invoice])

当上述脚本被执行时,以下SQL查询被运行 —

CREATE TABLE Customers (
   id INTEGER NOT NULL
   PRIMARY KEY,
   name TEXT NOT NULL,
   address TEXT NOT NULL,
   phone INTEGER NOT NULL
);
CREATE TABLE Invoices (
   id INTEGER NOT NULL
   PRIMARY KEY,
   invno INTEGER NOT NULL,
   amount INTEGER NOT NULL,
   custid_id INTEGER NOT NULL,
   FOREIGN KEY (
      custid_id
   )
   REFERENCES Customers (id)
);

当在SQLiteStuidio GUI工具中验证时,表结构显示如下—

Peewee - 字段类

其他字段类型

Peewee的其他字段类型包括 –

序号 字段和描述
1 IPField 用于有效存储IPv4地址的字段类型(整数)。
2 BooleanField 用于存储布尔值的字段类。
3 AutoField 字段类,用于存储自动递增的主键。
4 IdentityField 字段类,用于存储自动递增的主键,使用新的Postgres 10 IDENTITY 字段类,用于存储自动递增的主键,使用新的Postgres 10 IDENTITY列类型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程