Декларативная база не сбор таблиц - PullRequest
0 голосов
/ 11 января 2019

Я использую 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, кажется, понимает эту структуру и может успешно генерировать миграции. Однако, если в другом коде, таком как мои тесты, я импортирую свою базу, в ней нет таблиц. Вот интерактивный пример из каталога db с каталогом, содержащим db, добавленным в мой PYTHONPATH:

import model
model.Base.metadata.tables
>>>> immutabledict({})

Почему в метаданных Base нет таблиц? Я прочитал документы по sqlalchemy и вижу, что иногда декларативные базы привязаны к движку, но похоже, что это для создания таблиц, чего я не хочу делать. Я хочу видеть только метаданные, но они пустые

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...