Peewee 带有一个 Playhouse 命名空间。它是各种扩展模块的集合。其中之一是 playhouse.sqlite_ext 模块。它主要定义SqliteExtDatabase类继承自SqliteDatabase类,支持如下功能:
SQLite扩展功能
Peewee 支持的 SQLite 扩展功能如下:
- 全文检索
-
JavaScript Object Notation (JSON) 扩展集成
-
闭包表(Closure table)扩展支持
-
LSM1扩展支持
-
用户定义表功能
-
支持使用备份 API 进行在线备份: backup_to_file().
-
BLOB API 支持, 用于高效的二进制数据存储.
如果将JSONField声明为字段属性,则可以存储 JSON 数据。
class MyModel(Model):
json_data = JSONField(json_dumps=my_json_dumps)
要激活全文(full-text
)搜索,可以使用DocIdField来定义主键。
class NoteIndex(FTSModel):
docid = DocIDField()
content = SearchField()
class Meta:
database = db
FTSModel 是VirtualModel的子类,可在http://docs.peewee-orm.com/en/latest/peewee/sqlite_ext.html#VirtualModel与 FTS3 和 FTS4 全文搜索扩展。Sqlite 会将所有列类型视为 TEXT(即使你存储其他数据类型,Sqlite 会将它们都视为文本)。
SearchField 是一个字段类,用于表示 全文搜索虚拟表的 模型上的列。
SqliteDatabase 支持 AutoField 用于增加主键。但是,SqliteExtDatabase 支持 AutoIncrementField 以确保 删除行后,primary 始终单调递增。
playhouse 命名空间 (playhouse.sqliteq
) 中的 SqliteQ 模块定义了 SqliteExeDatabase 的子类来处理对 SQLite 数据库的序列化并发写入。
playhouse.apsw 模块支持 apsw sqlite 驱动,另外 Python SQLite Wrapper (APSW) 速度很快,可以处理嵌套事务,在你的代码中显式管理。
from apsw_ext import *
db = APSWDatabase('testdb')
class BaseModel(Model):
class Meta:
database = db
class MyModel(BaseModel):
field1 = CharField()
field2 = DateTimeField()
酷客网相关文章:
评论前必须登录!
注册