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