迁移功能
- 在迁移过程中,没有明确的上下函数。取而代之的是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没有被检查,因为默认值可能有歧义,请注意)。
- 最好的做法是在创建存储后立即调用这个函数。
参考链接