Mat*_*att 4 database django postgresql django-models django-migrations
我有一个现有的填充数据库,并且想将 a 转换PositiveIntegerField
为FloatField
. 我正在考虑简单地进行迁移:
migrations.AlterField(
model_name='mymodel',
name='field_to_convert',
field=models.FloatField(
blank=True,
help_text='my helpful text',
null=True),
),
Run Code Online (Sandbox Code Playgroud)
该字段当前定义为:
field_to_convert = models.PositiveIntegerField(
null=True,
blank=True,
help_text='my helpful text')
Run Code Online (Sandbox Code Playgroud)
这是否需要完全重写数据库列?对于更大的数据库来说,这种转换的扩展效果如何?如果绝大多数值都是 的话,它会如何扩展null
?什么情况下这种转换会失败?如果有区别的话,这是由 Postgres 数据库支持的。
不,不会的。我用 PostgreSQL、MySQL 和 SQLite 做了一个实验,从整数到浮点数的转换在每种情况下都很顺利,我还把一些值设置为 null 以匹配你的情况。
如果你有一个值3
,它就会变成3.0
。
好吧,由于您保留null=True
字段的配置,所有空值都将保持为空,所以没有问题。如果删除,null=True
您可能需要指定一个default
值。
获取一个 int 列并将其转换为 float (实数)应该不会失败,如果你发现一个奇怪的、怪异的和非常特殊的情况,那将是一个非常大的发现。
...您可以首先使用sqlmigrate查看迁移 SQL ,当然,您可以备份数据库。
归档时间: |
|
查看次数: |
1355 次 |
最近记录: |