Peewee - PostgreSQL 和 MySQL 扩展


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

PostgreSQL 扩展的特点

Peewee 支持的 PostgreSQL 扩展的功能如下:

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

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

  • IntervalField字段类型,用于存储timedelta对象。

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

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

  • 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='')