我如何访问 python 内部 class 中的全局变量

how can i access a global variable in a python inner class

我是 Python 的新手。我正在使用 Peewee ORM 和 Bottle 进行一个项目。

我的 models.py 文件定义了我的模型。我的 "db" 变量在我的主文件 (index.py) 中定义。我想在下面的 BaseModel Meta 内部 class 中使用全局访问同一个 "db" 实例。

from peewee import *
import settings

class BaseModel(Model):
    global db
    class Meta:
        global db
        database = db

class Account(BaseModel):
    created_ip = CharField(null=True)
    created_on = DateTimeField()

当我尝试 运行 代码

时出现以下错误
Traceback (most recent call last):
  File "index.py", line 11, in <module>
    from models import Account, Crawl, Site, Url
  File "/api/models.py", line 4, in <module>
    class BaseModel(Model):
  File "/api/models.py", line 7, in BaseModel
    class Meta:
  File "/api/models.py", line 9, in Meta
    database = db
NameError: name 'db' is not defined

我可以在内部 class 中访问全局 "db" 吗?有没有更简单的方法在另一个文件中使用全局 "db" 实例?

谢谢

不要在主文件中定义 db 数据库实例。将它与您的模型放在 models.py 中。并且,根据 documentation,建议有一个 基础模型 ,它会定义 database "meta" 属性:

db = SqliteDatabase('my_app.db')

class BaseModel(Model):
    class Meta:
        database = db

class User(BaseModel):
    username = CharField()