为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8.1
【操作系统】:Windows 11 家庭中文版
【CPU】:AMD Ryzen 7 4800U with Radeon Graphics
【问题描述】*:试用版安装完示例例子后查询修改没有问题,但是插入数据报:dmPython.DatabaseError: [CODE:-2106]第1 行附近出现错误: 无效的表或视图名[sys_log]
python:3.10
dmPython:2.5.5
sqlalchemy_dm:2.0.0
Traceback (most recent call last):
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy\engine\base.py", line 1980, in _exec_single_context
result = context._setup_result_proxy()
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy\engine\default.py", line 1594, in _setup_result_proxy
result = self._setup_dml_or_text_result()
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy\engine\default.py", line 1680, in _setup_dml_or_text_result
self._setup_ins_pk_from_lastrowid()
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy_dm\base.py", line 1666, in _setup_ins_pk_from_lastrowid
self.inserted_primary_key = [
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy_dm\base.py", line 1667, in <listcomp>
self._set_autoinc_col_from_lastrowid(table, autoinc_col, lastrowid) if c is autoinc_col else
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy_dm\base.py", line 1632, in _set_autoinc_col_from_lastrowid
self.dialect.do_execute(self.cursor, statement, None, None)
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy_dm\base.py", line 1817, in do_execute
super(DMDialect, self).do_execute(cursor, statement, parameters, context)
File "F:\PythonProject\dfms.venvdm\lib\site-packages\sqlalchemy\engine\default.py", line 747, in do_execute
cursor.execute(statement, parameters)
dmPython.DatabaseError: [CODE:-2106]第1 行附近出现错误:
无效的表或视图名[sys_log]
sqlalchemy_dm下的base.py中_set_autoinc_col_from_lastrowid方法里面:
statement = "select {} from {} where rowid = {}".format(autoinc_col.name, table.name, lastrowid)
把table.name改成table.fullname就可以了,
修改后的结果:statement = "select {} from {} where rowid = {}".format(autoinc_col.name, table.fullname, lastrowid)