gpt4 book ai didi

python - peewee - 与 Database() 初始化分开定义模型

转载 作者:行者123 更新时间:2023-11-28 21:45:27 31 4
gpt4 key购买 nike

我需要使用一些 ORM 引擎,例如 peewee,以便在我的 python 应用程序中处理 SQLite 数据库。然而,大多数这样的库都提供这样的语法来定义 models.py:

import peewee

db = peewee.Database('hello.sqlite')

class Person(peewee.Model):
name = peewee.CharField()

class Meta:
database = db

但是,在我的应用程序中,我不能使用这种语法,因为数据库文件名是在导入后由外部代码从模块提供的,该模块导入了我的 models.py

如何从知道动态数据库文件名的定义之外初始化模型?理想情况下,models.py 不应像普通 ORM 一样包含“数据库”提及项。

最佳答案

也许您正在查看代理功能: proxy - peewee

database_proxy = Proxy()  # Create a proxy for our db.

class BaseModel(Model):
class Meta:
database = database_proxy # Use proxy for our DB.

class User(BaseModel):
username = CharField()

# Based on configuration, use a different database.
if app.config['DEBUG']:
database = SqliteDatabase('local.db')
elif app.config['TESTING']:
database = SqliteDatabase(':memory:')
else:
database = PostgresqlDatabase('mega_production_db')

# Configure our proxy to use the db we specified in config.
database_proxy.initialize(database)

关于python - peewee - 与 Database() 初始化分开定义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395528/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com