Peewee - PostgreSQL 和 MySQL 扩展

额外的 PostgreSQL 功能由在 playhouse.postgres_ext 模块中定义的帮助程序启用。 该模块定义了 PostgresqlExtDatabase 类并提供了以下附加字段类型,专门用于声明要映射到 PostgreSQL 数据库表的模型。


PostgreSQL 扩展功能

Peewee 支持的 PostgreSQL Extensions 特性如下 −

  • ArrayField 字段类型,用于存放数组。

  • HStoreField 字段类型,用于存储键/值对。

  • IntervalField 字段类型,用于存储时间增量对象。

  • JSONField 字段类型,用于存储 JSON 数据。

  • jsonb JSON 数据类型的 BinaryJSONField 字段类型。

  • TSVectorField 字段类型,用于存储全文搜索数据。

  • DateTimeTZField 字段类型,时区感知日期时间字段。

本模块旨在提供额外的 Postgres 特定功能。

  • hstore 支持。

  • 服务器端游标。

  • 全文搜索。

Postgres hstore 是一个键值存储,可以作为 HStoreField 类型的字段之一嵌入到表中。 要启用 hstore 支持,请使用 register_hstore=True 参数创建数据库实例。

db = PostgresqlExtDatabase('mydatabase', register_hstore=True)

用一个 HStoreField 定义一个模型。

class Vehicles(BaseExtModel):
   type = CharField()
   features = HStoreField()

创建模型实例如下 −

v=Vechicle.create(type='Car', specs:{'mfg':'Maruti', 'Fuel':'Petrol', 'model':'Alto'})

访问 hstore 值 −

obj=Vehicle.get(Vehicle.id=v.id)
print (obj.features)

MySQL 扩展

MysqlDatabase 类的替代实现由 playhouse.mysql_ext 模块中定义的 MySQLConnectorDatabase 提供。 它使用 Python 的 DB-API 兼容官方 mysql/python 连接器

from playhouse.mysql_ext import MySQLConnectorDatabase

db = MySQLConnectorDatabase('mydatabase', host='localhost', user='root', password='')