如何在Peewee中动态设置SQLite数据库文件?

Chr*_*oba 8 peewee

我正在使用Peewee进行我正在进行的项目,我正在试图弄清楚如何动态设置数据库,以便我可以使用一个用于生产,一个用于测试.我见过的所有例子在任何类之外都有以下行:

database = SqliteDatabase(DATABASE)
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,因为我认为你会希望它在一个类中,所以你可以传入不同的数据库路径.有关为prod和另一个数据库选择一个数据库进行测试的建议吗?

谢谢!

小智 7

我刚刚遇到了一个类似的问题,这是我在运行时定义数据库路径的解决方法:

模型文件:

import peewee

database = peewee.SqliteDatabase(None)  # Defer initialization

class SomeData(peewee.Model):
    somefield = peewee.CharField()

    class Meta:
        database = database
Run Code Online (Sandbox Code Playgroud)

然后在使用数据库的类中:

from models import SomeData

class DatabaseUser:
    def __init__(self, db_path):
        database.init(db_path)
Run Code Online (Sandbox Code Playgroud)


col*_*fer 4

数据库通常在模块范围内声明,因为模型类是在那里定义的,并且它们通常依赖于数据库。

但是,您可以使用以下技术推迟数据库的初始化:

如果您使用相同的数据库类,第一个很有用。当您使用 Sqlite 进行开发并使用 Postgres 进行生产时,您实际上只需要代理,例如