为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:windows 11
【CPU】: intel
【问题描述】*:如某个数据表字段名为mode,在使用db.add方法时,SQL语句中的mode字段会用双引号包围,但绑定数据的时候报错:sqlalchemy.exc.StatementError: (builtins.KeyError) '"mode"',查询时没有问题。
我修改了sqlalchemy2.0.0源码sqlalchemy_dm目录中的dmPython.py中的class DMCompiler_dmPython(DMCompiler):中的return DMCompiler.bindparam_string(self, quoted_name, **kw)为return DMCompiler.bindparam_string(self, name, **kw),问题得到解决。请看看这种修改是否会引起其他问题,这个驱动是否应该修改以适配数据表的字段名使用关键字的情况?
jdbc单机版
jdbc:dm://10.0.83.83:5236?keyWords=(KEYS,keys,VALUES,values)
jdbc集群版
jdbc:dm://dm_dw?dm_dw=(10.0.208.110:5236,10.0.208.111:5236)&loginMode=1&keyWords=(KEYS,keys,VALUES,values)
可以使用这种方式规避关键字,不过最好还是不要使用关键字作为字段,建议改掉