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;另一个文件中的实例?
谢谢
答案 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()