#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 прост в настройке, зависит от разработчика, а не от времени выполнения, и избавит вас от необходимости изобретать велосипед, чтобы сделать это.