为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Windows11
【CPU】: i5-12490F
【问题描述】*:Python版本为 3.10.17
SQLAlchemy1.4.6
sqlalchemy_dm1.4.39
dmPython==2.5.8
逻辑代码为官方示例: https://eco.dameng.com/document/dm/zh-cn/app-dev/python-SQLAlchemy.html
使用SQLAchemy操作数据库插入数据时报错
AttributeError: 'PrimaryKeyConstraint' object has no attribute 'c'
同样的代码在sqlalchemy_dm1.1.10 + SQLAlchemy1.3.24下正常
详细报错栈:
Traceback (most recent call last):
File "C:\Users\sunml\Documents\play\main.py", line 85, in <module>
main()
File "C:\Users\sunml\Documents\play\main.py", line 21, in main
fun_insert(DBSession)
File "C:\Users\sunml\Documents\play\main.py", line 63, in fun_insert
session.commit()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 1415, in commit
self._transaction.commit(_to_root=self.future)
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 829, in commit
self._prepare_impl()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 808, in _prepare_impl
self.session.flush()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 3233, in flush
self.flush(objects)
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 3372, in flush
with util.safe_reraise():
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\util\langhelpers.py", line 70, in exit
compat.raise(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\util\compat.py", line 211, in raise
raise exception
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\session.py", line 3333, in _flush
flush_context.execute()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 453, in execute
rec.execute(self)
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 627, in execute
util.preloaded.orm_persistence.save_obj(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\persistence.py", line 242, in save_obj
_emit_insert_statements(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\orm\persistence.py", line 1219, in _emit_insert_statements
result = connection._execute_20(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1520, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\sql\elements.py", line 313, in _execute_on_connection
return connection._execute_clauseelement(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1389, in _execute_clauseelement
ret = self._execute_context(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1748, in _execute_context
self.handle_dbapi_exception(
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1933, in handle_dbapi_exception
util.raise(exc_info[1], with_traceback=exc_info[2])
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\util\compat.py", line 211, in raise
raise exception
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\base.py", line 1721, in _execute_context
result = context._setup_result_proxy()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\default.py", line 1377, in _setup_result_proxy
result = self._setup_dml_or_text_result()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy\engine\default.py", line 1443, in _setup_dml_or_text_result
self._setup_ins_pk_from_lastrowid()
File "C:\Users\sunml\miniforge3\envs\py310\lib\site-packages\sqlalchemy_dm-1.4.39-py3.10.egg\sqlalchemy_dm\base.py", line 1674, in _setup_ins_pk_from_lastrowid
AttributeError: 'PrimaryKeyConstraint' object has no attribute 'c'