我正在使用sqlalchemy定义架构,并使用Alembic来管理迁移。我的文件结构如下:
db
|----model
| |------ __init__.py
| |------ tableone.py
|
|----assorted alembic files...
我模型的__init__.py使用声明性基础来收集所有表定义:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
import db.model.tableone
然后我的表定义如下:tableone.py:
from ..model import Base
from sqlalchemy import (Column, Integer)
class TableOne(Base):
__tablename__ = 'event'
column_one = Column(Integer, nullable=False, primary_key=True)
Alembic似乎了解这种结构,并且可以成功生成迁移。但是,如果在其他代码(例如测试)中导入了Base,则它没有表。这是一个来自db
目录内部的交互式示例,其中包含db
的目录已添加到我的PYTHONPATH
中:
import model
model.Base.metadata.tables
>>>> immutabledict({})
Base
的元数据为什么没有任何表?我已经阅读了sqlalchemy文档,并发现有时声明性库已绑定到引擎,但是看起来这是用于创建表,而我不想这样做。我只想查看元数据,但是它是空的