比较SQLAlchemy中的数值

时间:2019-01-15 10:37:10

标签: python postgresql sqlalchemy

我想在数据库中存储非整数,并能够比较它们以发现重复项。显然,应该在预设的小数位数(例如2)内进行比较。简而言之,我的问题是:最有效的方法是什么?

我的第一次尝试是将它们存储为SQLAlchemy中的数字形式,

class MyTable(Base):
    __tablename__ = 'mytable'
    x = Column(Numeric(2, 2))

然后以

进行比较
session = Session()  # this was configured elsewhere
query = session.query(MyTable)
query = query.filter(MyTable.x == y)  # y is a float
return session.query(query.exists()).scalar()

现在,这失败了,如果我输入y作为浮点数,条件似乎变成false。

我可以解决上述方法吗? 如果没有,做我想要的最干净的方法是什么? (这里快速和干净之间的权衡是什么?)我是否必须求助于将数据转换为字符串或整数?还是要解决不平等问题??

1 个答案:

答案 0 :(得分:0)

我想我解决了。似乎数字将作为字符串进行比较,因此在比较之前,我应该将参考值转换为字符串:

session = Session()  # this was configured elsewhere
query = session.query(MyTable)
query = query.filter(MyTable.x == f'{y:.2f}')  # y is a float
return session.query(query.exists()).scalar()