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

问题描述 投票:8回答:2

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

database = SqliteDatabase(DATABASE)

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

peewee
2个回答
3
投票

我刚刚遇到了类似的问题,这是我如何解决它在运行时定义数据库的路径:

型号文件:

import peewee

database = peewee.SqliteDatabase(None)  # Defer initialization

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

    class Meta:
        database = database

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

from models import SomeData

class DatabaseUser:
    def __init__(self, db_path):
        database.init(db_path)

2
投票

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

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

如果您使用相同的数据库类,第一个是有用的。当你使用Sqlite for dev和Postgres for prod时,你真的只需要代理,例如

© www.soinside.com 2019 - 2024. All rights reserved.