Создание столбца SQLAlchemy с внешним ключом

#python #python-3.x #database #postgresql #sqlalchemy

#python #python-3.x #База данных #postgresql #sqlalchemy

Вопрос:

В настоящее время я добавляю новые столбцы в существующие таблицы базы данных (PostgreSQL), используя SQLAlchemy и следующий код Python:

 from sqlalchemy import Column, ForeignKey, Integer, String

def add_column(engine, table_name, column):
    column_name = column.compile(dialect=engine.dialect)
    column_type = column.type.compile(engine.dialect)
    engine.execute('ALTER TABLE %s ADD COLUMN %s %s' % (table_name, column_name, column_type))

column = Column('city', String)
add_column(engine, 'homes', column)
 

Однако, когда я пытаюсь добавить столбец с внешним ключом, как показано:

 column = Column('city', Integer, ForeignKey('cities.id'))
add_column(engine, 'homes', column)
 

внешний ключ, похоже, не добавлен.

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

Комментарии:

1. Вы намеренно не используете инструмент миграции, такой как alembic ?

2. @SuperShoot Похоже, это, вероятно, будет единственным изменением любой структуры таблицы в базе данных этого проекта. Попытка избежать использования другой зависимости.

3. Это только мое мнение, вы можете принять его или оставить. Alembic прост в настройке, зависит от разработчика, а не от времени выполнения, и избавит вас от необходимости изобретать велосипед, чтобы сделать это.