簡體   English   中英

對於Django,是否有像South的SQLAlchemy自動遷移工具?

[英]Is there SQLAlchemy automigration tool like South for Django?

對於Django,是否有像South的SQLAlchemy自動遷移工具?

我查看了sqlalchemy-migrate,但它似乎沒有自動生成sql更新腳本或升級降級數據庫

看起來像sqlalchemy-migrate你需要a)手動將舊模型復制到新文件b)在應用程序中創建新模型並將其復制到新文件c)在python sqlalchemy擴展方言d中手動創建/刪除/更改表)生成sql alter script e)運行命令執行alter sql腳本

至於我它沒有解決問題,只增加了開銷,因為我可以簡單地做d)手動,它會比a)更快,b),c)手動只是為了d)你可以在一個步。

SQLAlchemy是否有像JDBC for Django或許多類似RoR的遷移工具的自動遷移庫?

我需要的是在python app中更改SQLAlchemy模型,運行工具,它會將當前的數據庫模式與新模型應該使用的新數據庫模式進行比較,並創建我可以手動調整並執行的Alter腳本。

在Python中有這樣的解決方案嗎?

您可以使用Alembic執行自動遷移。 我在目前正在進行的兩個大型項目中使用它。 自動遷移生成器可以識別:

  • 表格增加和刪除
  • 列添加和刪除
  • 列上可空狀態的更改
  • 索引的基本更改,顯式命名的唯一約束和外鍵

(另見: https//alembic.sqlalchemy.org/en/latest/autogenerate.html

安裝alembic

pip install alembic

或(取決於您使用的Python版本):

pip3 install alembic

配置alembic

在項目中執行以下命令:

alembic init alembic

這將為您的項目設置alembic,名為alembic

然后,您需要編輯生成的alembic.ini配置文件。

在文件env.py ,告訴Alembic在項目中的哪個位置找到SQLAlchemy的metadata對象。

(另見: https//alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file

生成遷移

只需執行以下命令行:

alembic revision --autogenerate -m "Message for this migration"

甚至(不推薦):

alembic revision --autogenerate

升級數據庫

在此之后,我使用包含alembic.ini配置文件的文件夾中的這個簡單命令升級數據庫:

alembic upgrade head

(另見: http//rodic.fr/blog/automatic-migrations-sqlalchemy-alembic/

Alembic看起來非常有前途,但問題是(目前)對SQlite數據庫的支持非常有限。

目前沒有,沒有。 Alembic要求您編寫有關添加/刪除/更改表結構或創建/刪除表的代碼。 因此,對於sqlalchemy來說,沒有像django south那樣的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM