Postgres中'money'和'OID'的sqlalchemy等效列类型是什么?
在Postgres数据库中,'money'和'OID'这两种列类型在sqlalchemy中分别对应什么类型呢?
2 个回答
13
根据这个链接上的讨论,最后得出的结论是:
用FLOAT来表示货币金额是个非常糟糕的主意,因为它在存储和计算上不够精确。
使用MONEY也不推荐,因为它太受地区影响了。
应该使用NUMERIC来代替。
5
我们从来没有专门的“OID”类型,不过在0.4版本系列中,我们支持在每个表中隐含地有一个“OID”列,这主要是为了兼容Postgres。不过,由于用户自己定义的OID列在Postgres中已经不再推荐使用,而且我们实际上也没有真正用到这个OID功能,所以我们把这个功能从库中移除了。
如果在SQLA中没有提供某种特定类型,作为指定自定义类型的替代方案,你可以使用NullType,这意味着SQLA对这个类型没有特别的了解。如果psycopg2已经为这个列发送或接收了一个有用的Python类型,那么其实就不需要一个SQLA类型对象,除了在发出CREATE TABLE语句时需要用到。