J'ai le même problème, et la pensée d'utiliser la bibliothèque de migration uniquement pour cette chose triviale me fait
trembler. Quoi qu'il en soit, c'est ma tentative jusqu'à présent :
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('new_column_name', String(100), primary_key=True)
add_column(engine, table_name, column)
Pourtant, je ne sais pas comment insérer primary_key=True
en requête SQL brute.
2 votes
Un peu en rapport :
sqlalchemy.Table
a.append_column()
yappend_constraint()
. Ceci est utile pour construire les métadonnées de sqlalchemy dans des appels séparés, mais pas pour modifier les objets de la base de données (pour lesquels vous avez besoin de migrations, comme indiqué dans les réponses à cette question).