为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:Linux
【CPU】:
【问题描述】*:
使用sqlalchemy的orm进行新增或更新后返回数据失败
如果returning是整个table或所有列会Segmentation fault
;
如果只输入几个列会报错ResourceClosedError: This result object does not return rows. It has been closed automatically.
复现代码:
from sqlalchemy import *
url = 'dm+dmPython://SYSDBA:SYSDBA001@dameng:5236/'
engine = create_engine(url)
table = Table('test', MetaData(), Column('id', Integer, primary_key=True), Column('name', Text))
table.drop(engine, checkfirst=True)
table.create(engine)
# ResourceClosedError
engine.execute(table.insert().values(name='test').returning(table.c.id)).fetchall()
# Segmentation fault
engine.execute(table.insert().values(name='test').returning(table)).fetchall()
相关版本:
python: 3.9.13
sqlalchemy: 1.4.49
sqlalchemy-dm: 1.1.10
已解决,sqlalchemy-dm对于缺少对out_param的支持,自己修改下dialect就好了
不建议用sqlalchemy-dm,错误多的很,能用别的就用别的吧
你可以参考一下这个链接
https://blog.csdn.net/weixin_42410875/article/details/125391464