Как заставить перегонный куб или фляжку мигрировать внешние ключи имен при автоматической генерации миграций?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить перегонный куб или фляжку мигрировать внешние ключи имен при автоматической генерации миграций?

Сообщение Anonymous »

Я довольно долго боролся с этой проблемой и, как ни странно, не смог найти на SO простого сочетания вопросов и ответов по этому поводу. Похожие вопросы здесь и здесь. Наконец-то я нашел решение, поэтому задам и отвечу на свой вопрос.
В Flask SQLAlchemy (и обычном SQLAlchemy) вы можете иметь такой столбец:

Код: Выделить всё

class Character(db.model):
background_id = db.Column(db.Integer, db.ForeignKey('backgrounds.id'))
Когда вы запустите миграцию базы данных flask или перегонную ревизию --autogenerate, это приведет к операции, которая выглядит следующим образом:

Код: Выделить всё

def upgrade():
op.create_foreign_key(None, 'characters', 'backgrounds', ['background_id'], ['id'])

def downgrade():
op.drop_constraint(None, 'characters', type_='foreignkey')
Нет здесь плохо. Фактически, если вы попытаетесь перейти на более раннюю версию позже, это всегда потерпит неудачу, поскольку drop_constraint требуется имя ограничения.
Вы можете изменить это каждый раз, когда создаете миграцию, вот так:

Код: Выделить всё

def upgrade():
op.create_foreign_key('fk_characters_backgrounds', 'characters', 'backgrounds', ['background_id'], ['id'])

def downgrade():
op.drop_constraint('fk_characters_backgrounds', 'characters', type_='foreignkey')
Это работает!
Но если вы похожи на меня, вам не нужно помнить об этом каждый раз, когда вы автоматически создаете ревизия с помощью внешнего ключа.
Итак, вопрос в том, как мы можем сделать это автоматически?

Подробнее здесь: https://stackoverflow.com/questions/714 ... ting-migra
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при попытке запустить команду: перегонный куб --autogenerate -m "описание"
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»