声明式基础不收集表

时间:2019-01-11 18:33:01

标签: python sqlalchemy

我正在使用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文档,并发现有时声明性库已绑定到引擎,但是看起来这是用于创建表,而我不想这样做。我只想查看元数据,但是它是空的

0 个答案:

没有答案