Я хочу хранить нецелые числа в моей базе данных и иметь возможность сравнивать их для выявления дубликатов. Очевидно, что сравнение должно быть сделано с точностью до заданного числа десятичных знаков (скажем, 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 как число с плавающей запятой.
Можно ли исправить вышеуказанный подход?
Если нет, то какой самый чистый способ сделать то, что я хочу? (Каков компромисс между быстрым и чистым здесь?) Должен ли я прибегать к преобразованию моих данных в строки или целые числа? Или работать с неравенством ..?