如何在python内部类中访问全局变量

时间:2016-03-30 02:44:22

标签: python oop scope global-variables peewee

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

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

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

我可以访问全球&#34; db&#34;在内部类中,是否有更简单的方法来使用全局&#34; db&#34;另一个文件中的实例?

谢谢

1 个答案:

答案 0 :(得分:2)

不要在主文件中定义db数据库实例。将其与models.py中的模型保持一致。并且,根据documentation,建议使用基础模型,其中定义了database“meta”属性:

db = SqliteDatabase('my_app.db')

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

class User(BaseModel):
    username = CharField()