簡體   English   中英

比較 SQLAlchemy 中的數字

[英]Comparing Numerics in 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()
from sqlalchemy import cast, Numeric query = session.query(my_table).filter(cast(my_table.columns['col_a'], Numeric()) == 2100025895.0).count()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM