注册

sqlalchemy-dm提交事务执行commit时报错TypeError: 'NoneType' object is not subscriptable

漫天丶飞雪 2023/05/15 679 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【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
回答 0
暂无回答
扫一扫
联系客服