我可以在SQLAlchemy中实现以下内容吗?
SELECT *
FROM TABLE
WHERE RIGHT(COLUMN_CODE, 2) = 'AX'在这里,RIGHT( )返回具有指定字符数的字符串的右边部分。
是否有RIGHT函数的SQLAlchemy实现?
发布于 2012-11-29 16:39:57
您最好改用.endswith()方法:
select([tabledef]).where(tabledef.c.column_code.endswith('AX'))或者,当使用映射器配置和会话进行过滤时:
session.query(mappedobject).filter(mappedobject.column_code.endswith('AX'))column_code.endswith()方法将被转换为最适合您的特定引擎的任何SQL,匹配以AX结尾的列值。
如果必须直接使用SQL函数,则始终可以使用function generator创建任意RIGHT()函数:
from sqlalchemy.sql.expression import func
select([tabledef]).where(func.right(tabledef.c.column_code, 2) == 'AX')并且func.right()调用将由SQL生成层转换为RIGHT(column_code, 2)。
发布于 2012-11-29 16:09:04
文档没有明确说明,但是您可以使用func.funcname sytle编写任何函数。funcname不一定要由SQLAlchemy模块原生定义。SQLAlchemy知道一些常见的函数,比如min,max等,如果在这些函数中有方言的变化,SQLAlchemy会帮你处理。
但SQLAlchemy不知道的函数是按原样传递的。因此,您可以创建查询,该查询使用所需的RIGHT函数生成SQL语句,如下所示
>>> from sqlalchemy import func
>>> select([table]).where(func.RIGHT(users.c.column_code, 2)='AX')https://stackoverflow.com/questions/13621110
复制相似问题