如何使用 syncdb 获取 oracle NUMBER
Posted
技术标签:
【中文标题】如何使用 syncdb 获取 oracle NUMBER【英文标题】:How to get oracle NUMBER with syncdb 【发布时间】:2012-10-17 09:21:59 【问题描述】:我有一些遗留的 oracle 数据库,我对其运行 inspectdb 命令。 数据库中的一列具有类型 NUMBER(没有精度和比例)和 我从 django 得到的是:
entity_id = models.DecimalField(unique=True, null=True, max_digits=0, decimal_places=-127, blank=True)
如果我现在运行 syndb 尝试从模型生成架构,我将得到 错误:
Error: One or more models did not validate:
DecimalFields require a "decimal_places" attribute that is a non-negative integer.
DecimalFields require a "max_digits" attribute that is a positive integer.
我的问题是:我应该如何将模型中的 entity_id 类型修改为 在 oracle 中生成 NUMBER?
【问题讨论】:
【参考方案1】:我想我找到了答案。看起来 django 实际上非常聪明,并且故意产生这种有线值。目标是防止在没有开发人员查看的情况下从此模式创建模型。这是有道理的,因为通常使用没有比例和精度的 NUMBER 类型会使 django 不知道该字段实际上应该是什么。 NUMBER 是最通用的数字类型,可以拟合布尔值、带符号和不带符号的整数以及应该是浮点数的数字。这就是为什么这里需要开发人员做出明智的决定的原因。
【讨论】:
以上是关于如何使用 syncdb 获取 oracle NUMBER的主要内容,如果未能解决你的问题,请参考以下文章
获取 OperationalError:没有这样的功能:第一次运行 syncdb 时的版本
如何在 Oracle SQL 中获取 1000-2000 之间的素数
在 django 中,如何从初始化脚本中调用子命令“syncdb”?