Python 使用sqlalchemy,如何查询条目是否有具有特定数字类型值的列?
我正在使用python和sqlalchemy 我有一个db,它的列是数字类型 我想查询数据库以检查列中是否有具有特定值的条目 假设我要查找的值是Python 使用sqlalchemy,如何查询条目是否有具有特定数字类型值的列?,python,sqlalchemy,Python,Sqlalchemy,我正在使用python和sqlalchemy 我有一个db,它的列是数字类型 我想查询数据库以检查列中是否有具有特定值的条目 假设我要查找的值是1.04521,我们知道它在db中 我试过了 (result,) = session.query( exists().where(MyEntryClass.someNumericValue == 1.0452) 但是result仍然是False,即使我知道它在数据库中 如何检查是否存在具有特定数值的列的条目 原始问题: 经过进一步的探索,我认为这是由于
1.04521
,我们知道它在db中
我试过了
(result,) = session.query( exists().where(MyEntryClass.someNumericValue == 1.0452)
但是result
仍然是False
,即使我知道它在数据库中
如何检查是否存在具有特定数值的列的条目
原始问题:
经过进一步的探索,我认为这是由于非整数的舍入/表示。实际上您没有得到结果,因为存在查询执行器,如
all()、first()、scalar()
,所以使用scalar:
result = session.query(exists().where(MyEntryClass.someNumericValue==1.0452)).scalar()
这似乎并没有解决问题。如果我执行
queryRes=session.query(MyEntryClass)
,那么我会得到一个查询对象。如果我循环查询中的每个项目并打印MyEntryClass.someNumericValue
,它将打印Decimal('14.274873614')
,而不仅仅是值。另外,如果我在循环时尝试MyEntryClass.someNumericValue==14.274873614,则为False。这意味着问题在于数据而不是查询。你试过where(MyEntryClass.someNumericValue==Decimal(1.0452))
吗?我试过exists()。where(Particle.DET_forestreshold==Decimal(1.0452))
时出错,说未定义Decimal
。我不确定在哪里定义了Decimal
,以便导入它。