Peewee SQLite 扩展

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()

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!