Peewee – PostgreSQL和MySQL扩展
额外的PostgreSQL功能是由 playhouse.postgres_ext 模块中定义的辅助工具实现的。该模块定义了 PostgresqlExtDatabase 类,并提供了以下额外的字段类型,专门用于声明模型与PostgreSQL数据库表的映射。
PostgreSQL扩展功能的特点
Peewee支持的PostgreSQL扩展的特点如下
- ArrayField字段类型,用于存储数组。
 - 
HStoreField字段类型,用于存储键/值对。
 - 
IntervalField字段类型,用于存储时间点对象。
 - 
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='')
极客教程