我想在数据库中存储非整数,并能够比较它们以发现重复项。显然,应该在预设的小数位数(例如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。
我可以解决上述方法吗? 如果没有,做我想要的最干净的方法是什么? (这里快速和干净之间的权衡是什么?)我是否必须求助于将数据转换为字符串或整数?还是要解决不平等问题??
答案 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()