Hi Im not able to reproduce this, though I will grant things dont seem to work 
very well in this area, would need to know *exactly* what it is you are trying 
to accomplish. please alter the MCVE below to reproduce your error, it passes 
for me however does have a warning:

from sqlalchemy import Column
from sqlalchemy import create_engine
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.ext import automap
from sqlalchemy.orm import Session


_AutomapBase = automap.automap_base()


class Model1(_AutomapBase):
    __tablename__ = "model1"

    id_ = Column(
        "id", Integer, primary_key=True, autoincrement=True, key="id_"
    )
    tag = Column(String())


e = create_engine("sqlite://", echo=True)
with e.connect() as conn:
    conn.execute("create table model1 (id integer primary key, tag varchar)")

_AutomapBase.metadata.reflect(bind=e, only=["model1"], extend_existing=True)
_AutomapBase.prepare()

row = Model1(tag="tag1")


s = Session(e)
s.add(row)
s.flush()




On Sat, Aug 22, 2020, at 10:43 AM, Vitaly Kruglikov wrote:
> 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
>  
> <https://groups.google.com/d/msgid/sqlalchemy/d362d460-0013-4070-a8dd-4f8f2ef6dcc2n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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/712ed4dc-2654-45e1-b3d0-3b1c612dc35a%40www.fastmail.com.

Reply via email to