我有一个带有字符串列的表,但它只包含整数(作为字符串)。
当我想在某些查询中按此列排序时,问题就来了。SQLAlchemy(或更具体地说是python)对字符串使用字典顺序,所以
>>> '100000' < '99999'
True
即使当
>>> 100000 < 99999
False
如何实现 order_by 这个字符串列的数值?
我目前有这样的查询:
session.query(TableName).filter(TableName.column == 'some_value').order_by(TableName.string_column_holding_integers).all()
请注意,将列的类型更改为整数不是一种选择,我需要在当前条件下正确(按数值)order_by。
还发现直接在使用 SQL 的数据库上(这是一个 MySQL 数据库)我无法按此列正确排序,所以我发现使用 CAST(string_column_holding_integers AS unsigned) 在这里有效。但是还没有找到直接在 SQLAlchemy 查询上执行此操作(CAST 部分)的方法。