gpt4 book ai didi

python - 具有 int 值的 SQLAlchemy order_by 字符串列

转载 作者:行者123 更新时间:2023-12-05 00:19:13 24 4
gpt4 key购买 nike

我有一个带有 String 列的表,但它只包含整数(作为字符串)。

当我想在某些查询上按此列排序时,问题就出现了。 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 部分)的方法。

最佳答案

你可以做一个 cast 在 SQLAlchemy 中是这样的:

session.query(...).filter(...).order_by(cast(TableName.string_column_holding_integers, Integer))

关于python - 具有 int 值的 SQLAlchemy order_by 字符串列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com