我如何访问 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()
我是 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()