Peewee – SQLite扩展

Peewee – SQLite扩展

Peewee有一个Playhouse命名空间。它是各种扩展模块的集合。其中一个是 playhouse.sqlite_ext 模块。It mainly defines SqliteExtDatabase class which inherits SqliteDatabase class, supports following additional features −

SQLite扩展的特点

Peewee支持的SQLite扩展的特点如下

  • 全文搜索。

  • JavaScript Object Notation (JSON)扩展集成。

  • 支持闭合表扩展。

  • LSM1扩展支持。

  • 用户定义的表函数。

  • 支持使用备份API的在线备份:backup_to_file()。

  • 支持BLOB API,用于高效的二进制数据存储。

可以存储JSON数据,如果一个特殊的 JSONField 被声明为字段属性之一。

class MyModel(Model):
   json_data = JSONField(json_dumps=my_json_dumps)

为了激活全文搜索,模型可以有 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以确保主键总是单调地增加,而不考虑行的删除。

playhouse命名空间的SqliteQ模块(playhouse.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()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程