为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8(03134284132-20240115-215128-20081)
【操作系统】:linux
【CPU】:
【问题描述】*:
select id_code;
结果:
--03134284132-20240115-215128-20081 Pack2
select * from v$version;
结果:
DM Database Server 64 V8
DB Version: 0x7000c
03134284132-20240115-215128-20081
sqlalchemy_dm版本是1.4.39
从linux环境下/dmdbms/drivers/python/sqlalchemy1.4.6,执行
python setup.py install
启动项目,分页代码如下:
res = [i.to_dict() for i in query.offset(0).limit(10)]
发现分页打印的sql为:
SELECT test.app_id AS test_app_id
FROM test
WHERE test.deleted = 0 AND test.resource_type_id = 1
OFFSET 0 ROWS;
为什么代码里设置的limit没有效果,如何让sqlalchemy_dm支持limit?

试试如下方法:
找到python环境下Lib\site-packages\sqlalchemy_dm下面的base.py,搜索 def limit_clause 方法,把这个方法注释掉,替换为:
def limit_clause(self, select, **kw):
text = ""
if select._limit_clause is not None:
text += " \n LIMIT " + self.process(select._limit_clause, **kw)
if select._offset_clause is not None:
if select._limit_clause is None:
text += " \n LIMIT ALL"
text += " OFFSET " + self.process(select._offset_clause, **kw)
return text