Thank you very much for your quick help.
Yes, you are right, I was using the: "implicit_returning=False" flag on my
"create_engine()".
I add the following, in case it can be useful to you:
I removed the flag as suggested, and that's what I get now for the same
code example (with sqlalchemy 1.4):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python36\lib\site-packages\sqlalchemy\orm\session.py", line
3298, in flush
self._flush(objects)
File "C:\Python36\lib\site-packages\sqlalchemy\orm\session.py", line
3438, in _flush
transaction.rollback(_capture_exception=True)
File "C:\Python36\lib\site-packages\sqlalchemy\util\langhelpers.py", line
72, in __exit__
with_traceback=exc_tb,
File "C:\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 207,
in raise_
raise exception
File "C:\Python36\lib\site-packages\sqlalchemy\orm\session.py", line
3398, in _flush
flush_context.execute()
File "C:\Python36\lib\site-packages\sqlalchemy\orm\unitofwork.py", line
456, in execute
rec.execute(self)
File "C:\Python36\lib\site-packages\sqlalchemy\orm\unitofwork.py", line
633, in execute
uow,
File "C:\Python36\lib\site-packages\sqlalchemy\orm\persistence.py", line
247, in save_obj
insert,
File "C:\Python36\lib\site-packages\sqlalchemy\orm\persistence.py", line
1154, in _emit_insert_statements
statement, multiparams, execution_options=execution_options
File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
1583, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "C:\Python36\lib\site-packages\sqlalchemy\sql\elements.py", line
324, in _execute_on_connection
self, multiparams, params, execution_options
File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
1462, in _execute_clauseelement
cache_hit=cache_hit,
File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
1815, in _execute_context
e, statement, parameters, cursor, context
File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
1999, in _handle_dbapi_exception
util.raise_(exc_info[1], with_traceback=exc_info[2])
File "C:\Python36\lib\site-packages\sqlalchemy\util\compat.py", line 207,
in raise_
raise exception
File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
1752, in _execute_context
cursor, statement, parameters, context
File
"C:\Python36\lib\site-packages\sqlalchemy\dialects\postgresql\psycopg2.py",
line 968, in do_executemany
**kwargs
TypeError: execute_values() got an unexpected keyword argument 'fetch'
On Tuesday, August 31, 2021 at 4:24:24 PM UTC+2 Mike Bayer wrote:
> Hi -
>
> Your test case is omitting a critical detail which we would assume is you
> are using the "implicit_returning=False" flag on your create_engine().
> dont use this flag as it serves no useful purpose and that will fix your
> issue here, we will be deprecating and removing this flag.
>
> will try to fix the immediate issue if possible.
>
>
> On Tue, Aug 31, 2021, at 3:29 AM, Francesca L wrote:
>
> Hi group,
>
> I am tring to migrate from version *1.3.24* to *1.4.23* of SqlAlchemy,
> using *PostgreSQL 10*.
>
> I found that the following code example works with 1.3, but triggers a
> traceback with 1.4.
>
> import sqlalchemy
>
> session = ...
> metadata = sqlalchemy.MetaData()
> s_items = sqlalchemy.Sequence('s_items', start=1, increment=1,
> metadata=metadata)
> t_items = sqlalchemy.Table('t_items', metadata,
> sqlalchemy.Column('id', sqlalchemy.Integer, s_items, primary_key =
> True),
> )
> metadata.drop_all(bind=session.bind)
> metadata.create_all(bind=session.bind)
>
> class Item(object):
> pass
>
> sqlalchemy.orm.mapper(Item, t_items)
>
> item1 = Item()
> item2 = Item()
> session.add_all([item1, item2])
> session.flush()
>
> This code, with 1.4 only, triggers the following traceback:
>
> Traceback (most recent call last):
> File "C:\Python36\lib\site-packages\sqlalchemy\engine\base.py", line
> 1672, in _execute_context
> dialect, self, conn, execution_options, *args, **kw
> File "C:\Python36\lib\site-packages\sqlalchemy\engine\default.py", line
> 999, in _init_compiled
> self._process_executemany_defaults()
> File "C:\Python36\lib\site-packages\sqlalchemy\engine\default.py", line
> 1838, in _process_executemany_defaults
> if c.default and c.default.is_scalar:
> AttributeError: 'Sequence' object has no attribute 'is_scalar'
>
> The only way I found to work around this with version 1.4, is to call *flush
> *after each single *add*:
>
> item1 = Item()
> session.add(item1)
> session.flush()
> item2 = Item()
> session.add(item2)
> session.flush()
>
> But this seems weird, to me.
> Am I doing anything wrong?
> Thank you very much for any suggestion.
>
> Francesca Leon
>
>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sqlalchemy/c049bcf1-ff1c-4d78-b38f-6f2dba1a87e1n%40googlegroups.com
>
> <https://groups.google.com/d/msgid/sqlalchemy/c049bcf1-ff1c-4d78-b38f-6f2dba1a87e1n%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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/3af62c7e-9b82-4f5e-ab40-e94e5fd21619n%40googlegroups.com.