Я хочу программно сгенерировать ALTER TABLE
операторов в SQL Alchemy, чтобы добавить новый столбец в таблицу.Добавляемый столбец должен получить свое определение из существующего сопоставленного класса.
Итак, учитывая экземпляр SQL Alchemy Column
, могу ли я сгенерировать определения (ий) схемы SQL, которые потребуются для ALTER TABLE ... ADD COLUMN ...
иCREATE INDEX ...
?
Я играл в приглашении Python и смог увидеть удобочитаемое описание данных, которые мне нужны:
>>> DBChain.__table__.c.rName
Column('rName', String(length=40, convert_unicode=False, assert_unicode=None, unicode_error=None, _warn_on_bytestring=False), table=<Chain>)
Когда я звоню engine.create_all()
журнал отладки включает в себя операторы SQL, которые я ищу для генерации:
CREATE TABLE "Chain" (
...
"rName" VARCHAR(40),
...
)
CREATE INDEX "ix_Chain_rName" ON "Chain" ("rName")
Я слышал о sqlalchemy-migrate , но, похоже, он построен на статическойизменения, и я стремлюсь динамически генерировать изменения схемы.
(Я не заинтересован в защите этого дизайна, я просто ищу переносимый на диалекте способ добавления столбца в существующую таблицу.) * * тысяча двадцать-один