myapp
__init__.py
scripts
__init__.py
initialize_db.py
models
__init__.py
meta.py
foo.py
moo.py
现在meta.py
可以包含一个共享Base
的以及DBSession
:
Base = declarative_base()
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension))
每个都foo.py
可以moo.py
从meta.py
.
from .meta import Base
class Foo(Base):
pass
为确保从models
子包中提取所有表,并且为方便起见,您可以将它们导入models/__init__.py
:
from .meta import DBSession
from .foo import Foo
from .moo import Moo
如果不做这样的事情,不同的表将不会附加到,因此在调用Base
时不会被创建。create_all
然后,您的initialize_db
脚本可以通过以下方式创建所有表
from myapp.models.meta import Base
Base.metadata.create_all(bind=engine)
您的视图可以导入模型以获利:
from myapp.models import DBSession
from myapp.models import Foo