使用sqlite的自以为是的持久性
microcosm-sqlite的Python项目详细描述
微观Sqlite
使用sqlite加载自以为是的数据。
虽然大多数分布式应用程序运行时将使用网络数据存储来实现可变状态, 运行时只读数据的使用模式非常适合sqlite。
特别是,microcosm-sqlite
假设应用程序将
- 预先构建数据集,并将其作为静态工件(例如,在源代码管理中)发布。
- 在运行时加载数据不可变集,而不将整个数据集加载到内存中
编写模型
持久数据应该使用sqlalchemy的声明性基类。因为不同的数据集
可能在不同的sqlite数据库中提供,每个声明性基类都需要有一个唯一的
名称和单独的引擎配置,通过添加DataSet
作为
声明基类:
Base = DataSet.create("some_name")
class SomeModel(Base):
__tablename__ = "sometable"
id = Column(Integer, primary_key=True)
使用商店
基本的持久性操作通过存储区抽象出来:
class SomeStore(Store):
@property
def model_class(self):
return SomeModel
store = SomeStore()
results = store.search()
配置sqlite
每个DataSet
默认使用:memory:
存储,但可以通过两种方式进行自定义:
可以使用自定义路径配置
SQLiteBindFactory
:loader = load_from_dict( sqlite=dict( paths={ "some_name": "/path/to/database", }, ), ) graph = create_object_graph("example", loader=loader)
入口点可以包含从数据集名称到 返回路径的函数。