python - 比较 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 作为浮点数,条件似乎会变成错误。
我可以修复上述方法吗?如果不是,那么做我想做的最干净的方法是什么?(这里快速和干净之间的权衡是什么?)我是否必须求助于将我的数据转换为字符串或整数?或者与不平等一起工作..?
解决方案
我想我解决了。似乎这些数字将作为字符串进行比较,所以我应该在比较之前将我的参考值转换为字符串:
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()
推荐阅读
- javascript - Is it possible to extend Three.JS Mesh using classes?
- android - HERE Android Premium SDK:有卡车限制的地图滞后
- laravel - Laravel Bootstrap Modal Submit button not working
- ios - ionic - iFrame 在直播时未在 ios 上显示
- html - 如何强制在新行上关闭 HTML 标签?
- python - 如何在 django 的搜索结果中实现分页?
- css - 如何与页面一起滚动 Angular Material mat-menu 弹出窗口?
- php - 获取元键是术语序列化数组的用户
- javascript - App42 Shephertz Javascript 排行榜
- android - Android 7 徽章计数器