注册

达梦v8/python/sqlalchemy1.4.6失败

陈沛鑫 2025/06/26 157 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦v8
【操作系统】:ubuntu
【CPU】: Linux 4.19.90-52.44.v2207.ky10.x86_64 #3 SMP Sat Feb 8 14:30:49 CST 2025 x86_64 GNU/Linux
【问题描述】*:运行报错
【python版本】3.11.12

# pip freeze dmPython==2.5.11 greenlet==3.2.3 SQLAlchemy==1.4.6 sqlalchemy-dm==1.4.39

验证脚本

from urllib.parse import quote import sqlalchemy as sa from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import declarative_base Base = declarative_base() class TestTable(Base): __tablename__ = 'test_table' uid = sa.Column(sa.BigInteger, primary_key=True, autoincrement=True) username = sa.Column(sa.String(200), nullable=False) nickname = sa.Column(sa.String(200), nullable=True) def main(): host = '127.0.0.1' port = 5328 user = 'dm_user' password = quote('dm_password') url = f'dm+dmPython://{user}:{password}@{host}:{port}/?schema=demo_db' print(f'{url = !r}') engine = create_engine( url=url, echo=True, ) Session = sessionmaker(bind=engine) with Session() as session: po = TestTable(username='hello') session.add(po) session.commit() main()

运行报错

# python ./test.py 2025-06-26 15:16:11,703 INFO sqlalchemy.engine.Engine SELECT USER FROM DUAL 2025-06-26 15:16:11,703 INFO sqlalchemy.engine.Engine [raw sql] [] 2025-06-26 15:16:11,704 INFO sqlalchemy.engine.Engine SELECT USER FROM DUAL 2025-06-26 15:16:11,704 INFO sqlalchemy.engine.Engine [raw sql] [] 2025-06-26 15:16:11,705 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2025-06-26 15:16:11,707 INFO sqlalchemy.engine.Engine INSERT INTO test_table (username, nickname) VALUES (?, ?) 2025-06-26 15:16:11,707 INFO sqlalchemy.engine.Engine [generated in 0.00038s] ['hello', None] 2025-06-26 15:16:11,708 INFO sqlalchemy.engine.Engine ROLLBACK Traceback (most recent call last): File "/root/./test.py", line 43, in <module> main() File "/root/./test.py", line 40, in main session.commit() File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1415, in commit self._transaction.commit(_to_root=self.future) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 829, in commit self._prepare_impl() File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl self.session.flush() File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3233, in flush self._flush(objects) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3372, in _flush with util.safe_reraise(): File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ raise exception File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3333, in _flush flush_context.execute() File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 453, in execute rec.execute(self) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 627, in execute util.preloaded.orm_persistence.save_obj( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 242, in save_obj _emit_insert_statements( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 1219, in _emit_insert_statements result = connection._execute_20( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1520, in _execute_20 return meth(self, args_10style, kwargs_10style, execution_options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 313, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1389, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1748, in _execute_context self._handle_dbapi_exception( File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1933, in _handle_dbapi_exception util.raise_(exc_info[1], with_traceback=exc_info[2]) File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ raise exception File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1721, in _execute_context result = context._setup_result_proxy() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 1377, in _setup_result_proxy result = self._setup_dml_or_text_result() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 1443, in _setup_dml_or_text_result self._setup_ins_pk_from_lastrowid() File "/usr/local/lib/python3.11/site-packages/sqlalchemy_dm-1.4.39-py3.11.egg/sqlalchemy_dm/base.py", line 1674, in _setup_ins_pk_from_lastrowid AttributeError: 'PrimaryKeyConstraint' object has no attribute 'c'
回答 0
暂无回答
扫一扫
联系客服