【发布时间】:2018-06-13 04:58:36
【问题描述】:
我正在使用peewee 来管理 Postgres 数据库上的 CRUD 操作。
在the project documentation 中,应通过Meta 类设置与数据库的连接和创建ORM,其他ORM 类型应继承该类。
from peewee import *
db = PostgresqlDatabase('table', **{})
class BaseModel(Model):
class Meta:
database = db
class Product(BaseModel):
name = CharField(unique=True)
我希望能够将此设置封装在 Persistence 类中,如下所示(以免创建任何全局变量):
class Persistence():
db = None
class BaseModel(Model):
class Meta:
database = Persistence.db
class Product(BaseModel):
name = CharField(unique=True)
def __init__(self):
self.db = PostgresqlDatabase('table', **{})
不幸的是,这不适用于:
AttributeError: type object 'Persistence' has no attribute 'db'
我认为这不会按预期工作(忽略AttributeError),因为即使在创建BaseModel 时变量在范围内,它也会是None 并且不会改变Persistence 类已实例化。
- 有没有办法正确确定
db变量的范围,以便它使用Persistence上的类属性? - 我可以通过其他机制将这个
db连接传递给peewee吗?
【问题讨论】: