为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:统信服务器
【CPU】:Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
【问题描述】*:执行官方sqlalchemy-dm模块的代码提交事务异常
https://eco.dameng.com/document/dm/zh-cn/app-dev/python-SQLAlchemy.html
报错内容如下
2023-05-14 16:15:28,183 INFO sqlalchemy.engine.base.Engine SELECT USER FROM DUAL
2023-05-14 16:15:28,183 INFO sqlalchemy.engine.base.Engine []
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60 CHAR)) AS anon_1 FROM DUAL
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine []
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS NVARCHAR2(60)) AS anon_1 FROM DUAL
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine []
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine SELECT USER FROM DUAL
2023-05-14 16:15:28,184 INFO sqlalchemy.engine.base.Engine []
2023-05-14 16:15:28,185 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2023-05-14 16:15:28,186 INFO sqlalchemy.engine.base.Engine SELECT product."PRODUCTID" AS "product_PRODUCTID", product."NAME" AS "product_NAME", product."AUTHOR" AS "product_AUTHOR", product."PUBLISHER" AS "product_PUBLISHER", product."PUBLISHTIME" AS "product_PUBLISHTIME", product."PRODUCTNO" AS "product_PRODUCTNO", product."SATETYSTOCKLEVEL" AS "product_SATETYSTOCKLEVEL", product."ORIGINALPRICE" AS "product_ORIGINALPRICE", product."NOWPRICE" AS "product_NOWPRICE", product."DISCOUNT" AS "product_DISCOUNT", product."DESCRIPTION" AS "product_DESCRIPTION", product."TYPE" AS "product_TYPE", product."PAPERTOTAL" AS "product_PAPERTOTAL", product."WORDTOTAL" AS "product_WORDTOTAL", product."SELLSTARTTIME" AS "product_SELLSTARTTIME", product."SELLENDTIME" AS "product_SELLENDTIME"
FROM product
2023-05-14 16:15:28,186 INFO sqlalchemy.engine.base.Engine []
查询所有结果:
2023-05-14 16:15:28,188 INFO sqlalchemy.engine.base.Engine ROLLBACK
2023-05-14 16:15:28,188 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2023-05-14 16:15:28,189 INFO sqlalchemy.engine.base.Engine INSERT INTO product ("NAME", "AUTHOR", "PUBLISHER", "PUBLISHTIME", "PRODUCTNO", "SATETYSTOCKLEVEL", "ORIGINALPRICE", "NOWPRICE", "DISCOUNT", "DESCRIPTION", "TYPE", "PAPERTOTAL", "WORDTOTAL", "SELLSTARTTIME", "SELLENDTIME") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2023-05-14 16:15:28,189 INFO sqlalchemy.engine.base.Engine ['水浒传', '施耐庵,罗贯中', '中华书局', '2005-4-1', '9787101046137', '10', '19', '14.3', '7.5', ' 《水浒传》是宋江起义故事在民间长期流传基础上产生出来的,吸收了民间文学的营养。', '16', '922', '912000', '2006-03-20', '']
2023-05-14 16:15:28,191 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):
File "demo.py", line 81, in <module>
main()
File "demo.py", line 16, in main
fun_insert(DBSession)
File "demo.py", line 58, in fun_insert
session.commit()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 1046, in commit
self.transaction.commit()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 504, in commit
self._prepare_impl()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 483, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 2540, in flush
self._flush(objects)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 2682, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
with_traceback=exc_tb,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py", line 182, in raise_
raise exception
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/session.py", line 2642, in _flush
flush_context.execute()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute
rec.execute(self)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 589, in execute
uow,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj
insert,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/orm/persistence.py", line 1136, in _emit_insert_statements
statement, params
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1011, in execute
return meth(self, multiparams, params)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1130, in _execute_clauseelement
distilled_params,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1317, in _execute_context
e, statement, parameters, cursor, context
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1514, in _handle_dbapi_exception
util.raise_(exc_info[1], with_traceback=exc_info[2])
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py", line 182, in raise_
raise exception
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1294, in _execute_context
result = context._setup_crud_result_proxy()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy_dm-1.1.10-py3.7.egg/sqlalchemy_dm/base.py", line 1473, in _setup_crud_result_proxy
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py", line 1253, in _setup_crud_result_proxy
self._setup_ins_pk_from_lastrowid()
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy_dm-1.1.10-py3.7.egg/sqlalchemy_dm/base.py", line 1508, in _setup_ins_pk_from_lastrowid
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy_dm-1.1.10-py3.7.egg/sqlalchemy_dm/base.py", line 1508, in <listcomp>
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy_dm-1.1.10-py3.7.egg/sqlalchemy_dm/base.py", line 1487, in _set_autoinc_col_from_lastrowid
TypeError: 'NoneType' object is not subscriptable
应该是没编译,重新编译下
问题解决了么?
是不是insert语句少了一个字段,检查product表的主键PRODUCTID有没有填写
