Dear all, I am using: sqlalchemy==1.3.18 psycopg2==2.8.4 connection url schema: "postgresql+psycopg2://..." postgres 10.x
My code looks like this: ``` _AutomapBase = automap.automap_base() class Model1(_AutomapBase): __tablename__ = 'model1" id_ = sa.Column('id', sa.Integer, primary_key=True, autoincrement=True, key='id_') tag = sa.Column(sa.String()) _AutomapBase.metadata.reflect(bind=ENGINE, only=['model1'], extend_existing=True) _AutomapBase.prepare() row = Model1(tag='tag1') orm_session.add(attempt) orm_session.flush() ``` I get the exception `ArgumentError: Only one Column may be marked autoincrement=True, found both id and id.` when I run the following insert: ``` File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2523, in flush self._flush(objects) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2664, in _flush transaction.rollback(_capture_exception=True) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__ compat.raise_( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 178, in raise_ raise exception File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 2624, in _flush flush_context.execute() File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute rec.execute(self) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 586, in execute persistence.save_obj( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 239, in save_obj _emit_insert_statements( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1135, in _emit_insert_statements result = cached_connections[connection].execute( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1014, in execute return meth(self, multiparams, params) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 298, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1108, in _execute_clauseelement compiled_sql = elem.compile( File "<string>", line 1, in <lambda> File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 476, in compile return self._compiler(dialect, bind=bind, **kw) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 482, in _compiler return dialect.statement_compiler(dialect, self, **kw) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/compiler.py", line 590, in __init__ Compiled.__init__(self, dialect, statement, **kwargs) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/compiler.py", line 319, in __init__ self.string = self.process(self.statement, **compile_kwargs) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/compiler.py", line 350, in process return obj._compiler_dispatch(self, **kwargs) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/visitors.py", line 95, in _compiler_dispatch return meth(self, **kw) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/compiler.py", line 2427, in visit_insert crud_params = crud._setup_crud_params( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/crud.py", line 64, in _setup_crud_params return _get_crud_params(compiler, stmt, **kw) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/crud.py", line 158, in _get_crud_params _scan_cols( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/crud.py", line 346, in _scan_cols _append_param_insert_pk_returning( File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/crud.py", line 457, in _append_param_insert_pk_returning elif c is stmt.table._autoincrement_column or c.server_default is not None: File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/schema.py", line 779, in _autoincrement_column return self.primary_key._autoincrement_column File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 883, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) File "/tmp/empower-wf-venv/lib/python3.8/site-packages/sqlalchemy/sql/schema.py", line 3706, in _autoincrement_column raise exc.ArgumentError( sqlalchemy.exc.ArgumentError: Only one Column may be marked autoincrement=True, found both id and id. ``` I suspect this has something to do with the combination of the explicit definition of the `id_` column and reflection, but don't know how to fix. I really need to keep the explicit `id_` descriptor and shouldn't rename it to `id` because that's a reserved python word. In fact, when I check members of the Model, I see `extend_existing` added `id` even though `id_` was already defined to represent the actual column named `id`: ``` In [7]: dir(Model1) Out[7]: [ 'classes', 'id', 'id_', 'prepare', ... ] ``` Please help. Many thanks in advance! -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/d362d460-0013-4070-a8dd-4f8f2ef6dcc2n%40googlegroups.com.