Python 使用多个数据库和Pony ORM

Python 使用多个数据库和Pony ORM,python,ponyorm,Python,Ponyorm,我正在考虑使用sqlite作为应用程序文件格式,使用Pony ORM作为轻量级ORM。到目前为止,我看到的所有代码示例都将模型作为数据库对象放在一个单独的文件中 我的问题是,当用户创建一个新文件时,如何为同一数据库模型实例化一个新的数据库实例?所有数据库都是相同的模式 因此,一个文档链接到一个小马orm数据库对象,另一个文档链接到一个单独的小马orm对象 在PonyORM这可能吗?如果没有,在任何其他Python ORM中是否可能?通常最好将所有信息存储在一个数据库中。这样,您可以在单个查询中检

我正在考虑使用sqlite作为应用程序文件格式,使用Pony ORM作为轻量级ORM。到目前为止,我看到的所有代码示例都将模型作为数据库对象放在一个单独的文件中

我的问题是,当用户创建一个新文件时,如何为同一数据库模型实例化一个新的数据库实例?所有数据库都是相同的模式

因此,一个文档链接到一个小马orm数据库对象,另一个文档链接到一个单独的小马orm对象


在PonyORM这可能吗?如果没有,在任何其他Python ORM中是否可能?

通常最好将所有信息存储在一个数据库中。这样,您可以在单个查询中检索所有必要的信息

如果跨多个数据库拆分数据,则无法混合从不同数据库检索的对象,并且需要使用单独的查询处理每个数据库,尽管可以在共享db_会话中执行此操作

如果您确实想拥有多个数据库,可以在函数中定义实体:

### file models.py

def define_entities(db):
    class Foo(db.Entity):
        ...
    class Bar(db.Entity):
        ...

def open_database(filename):
    db = Database()
    define_entities(db)
    db.bind('sqlite', filename)
    db.generate_mapping(create_tables=True)
    return db

### file main.py

db1 = open_database('db1.sqlite')
db2 = open_database('db2.sqlite')

with db_session:
    foos = select(foo for foo in db1.Foo if <condition>)[:]
    bars = select(bar for bar in db2.Bar if <condition>)[:]

在上面的示例中,我编写了一个函数open_database,它作为数据库工厂工作。每个数据库都有自己的实体类,您可以作为db对象的属性访问:db.Foo、db.Bar等。

为什么需要另一个数据库实例?您可以在其他程序文件中导入db对象。难道您没有得到类似于:pony.orm.core.erdiagrameror:Entity definition Foo未找到吗?我的问题与dmigo完全相同