假设我有一些简单模型存在于
food.py
文件中:import peewee as pw
db = pw.SqliteDatabase('food.db')
class BaseModel(pw.Model):
class Meta:
database = db
class Taco(BaseModel):
has_cheese = pw.BooleanField()
class Spaghetti(BaseModel):
has_meatballs = pw.BooleanField()
db.connect()
# populate with some data if table doesn't exist
from random import random
if not Taco.table_exists():
db.create_table(Taco)
for _ in range(10):
Taco.create( has_cheese = (random() < 0.5) )
db.commit()
if not Spaghetti.table_exists():
db.create_table(Spaghetti)
for _ in range(10):
Spaghetti.create( has_meatballs = (random() < 0.5) )
db.commit()
接下来,我有food.py
和food.db
。但是假设和模型变得越来越大且复杂,因此我想将它们拆分成不同的文件。具体而言,我想在我的PYTHONPATH
中创建一个food
文件夹,其典型层次结构如下:
food/
- __init__.py
- BaseModel.py
- Taco.py
- Spaghetti.py
- db/
- food.db
我想把模型放到它们各自的 .py
文件中,并创建一个类似以下的 __init__.py
文件:
import peewee as pw
db = pw.SqliteDatabase('./db/food.db')
from . import BaseModel
from . import Taco
from . import Spaghetti
db.connect()
然而,这显然行不通,因为 BaseModel.py
无法访问 db
。如果可能以这种方式模块化多个peewee模型,正确的方法是什么?