注册

dmSQLAlchemy 2.0.2缺陷(使用工厂函数作为字段默认值时出现异常)

c悉 2025/03/13 186 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: dmSQLAlchemy 2.0.2
【操作系统】:Win10 64Bit
【CPU】: Intel(R) Core(TM) i7-8550U
【问题描述】*:
Python:3.12.9 64Bit
SQLAlchemy:2.0.34
驱动:dmPython 2.5.8
方言包:dmSQLAlchemy 2.0.2

使用pip install dmPython dmSQLAlchemy安装驱动和方言包
使用同步模式连接数据库正常

def new_id() -> str:
return ...

class TestModel(DeclarativeBase):
id: Mapped[Annotated[
str,
mapped_column(String(64), primary_key=True,
default=new_id, doc="主键ID"),
]]

当前使用uuid作为new_id的实现,并在主键字段中使用工厂函数作为default。
执行插入时出现异常。通过源码分析发现方言实现存在以下问题:
文件:sqlalchemy_dm/base.py
行号:1623、1627
函数:DMExecutionContext._setup_ins_pk_from_empty、DMExecutionContext._setup_ins_pk_from_implicit_returning
问题点:调用基类方法时未将值返回
image.png
image.png

回答 0
暂无回答
扫一扫
联系客服