遷移功能
- 在遷移過程中,沒有明確的上下函數。取而代之的是sqlite_orm提供的sync_schema函數,它負責將實際的db文件模式和你在make_storage調用中指定的模式進行比較,如果有什么不一樣,它就會改變或放棄/創建模式。
storage.sync_schema();
// or
storage.sync_schema(true);
注意事項
- 請注意,sync_schema并不能保證數據會被保存。它只是試圖保存數據。下面你可以看到sync_schema在調用時遵循的規則列表。
- 如果db中存在多余的表 它們將被忽略(而不是丟棄)。
- 每一個來自存儲的表與它的db模擬和比較
- 如果表不存在,則創建
- 如果表存在,它的列與來自db的table_info進行比較,并且
- 如果保存為false,如果db中存在不存在的列(多余的),表將被丟棄并重新創建,并且表將被復制到沒有多余列的臨時表中,源表將被丟棄,如果保存為true,復制后的表將被重命名為源表(sqlite刪除列技術)。它的默認值是false。要注意的是,將它設置為true可能會花費時間來復制表的行。
- 如果存儲空間中的列在db中不存在,那么將使用'ALTER TABLE ... ADD COLUMN ... "命令,表的數據不會被刪除,但是如果任何添加的列是空的,但沒有默認值,表將被刪除并重新創建。
- 如果有任何列存在于db和storage中,但由于任何屬性(type, pk, notnull)的不同,表將被刪除并重新創建(dflt_value沒有被檢查,因為默認值可能有歧義,請注意)。
- 最好的做法是在創建存儲后立即調用這個函數。
參考鏈接