Postgres中'money'和'OID'的sqlalchemy等效列类型是啥?
Posted
技术标签:
【中文标题】Postgres中\'money\'和\'OID\'的sqlalchemy等效列类型是啥?【英文标题】:What is the sqlalchemy equivalent column type for 'money' and 'OID' in Postgres?Postgres中'money'和'OID'的sqlalchemy等效列类型是什么? 【发布时间】:2010-09-26 10:36:34 【问题描述】:Postgres 中“money”和“OID”列类型的 sqlalchemy 等效列类型是什么?
【问题讨论】:
【参考方案1】:这就是我能找到的全部内容:http://docs.sqlalchemy.org/en/rel_0_9/core/types.html
如果您愿意,您也可以制作自己的类型。
【讨论】:
【参考方案2】:我们从未有过专门的“OID”类型,尽管我们在 0.4 系列中支持每个表上的隐式“OID”列的概念,主要是为了 postgres 的好处。然而,由于用户表定义的 OID 列在 Postgres 中已被弃用,而且我们实际上从未真正使用过现有的 OID 功能,因此我们已从库中删除了此功能。
如果 SQLA 中未提供特定类型,作为指定自定义类型的替代方法,您始终可以使用 NullType,这意味着 SQLA 不知道任何关于该类型的具体信息。如果 psycopg2 已经为该列发送/接收有用的 Python 类型,则实际上不需要 SQLA 类型对象,除了发出 CREATE TABLE 语句。
【讨论】:
【参考方案3】:来自这个link的论点 最后的结论是:
由于存储和算术的不精确性,将 FLOAT 用于货币金额是一个非常糟糕的主意。 不鼓励使用 MONEY,因为它对语言环境过于敏感 应使用 NUMERIC 代替
【讨论】:
Python sqlalchemy.Numeric() 示例here - '''Column("amount", Numeric(10, 2), nullable=True)'''以上是关于Postgres中'money'和'OID'的sqlalchemy等效列类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章