Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-28 Thread Javier Collado Jiménez
Thank you! -- 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 be

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-28 Thread Simon King
Sure, use an explicit transaction: https://docs.sqlalchemy.org/en/13/core/connections.html#using-transactions with connection.begin() as trans: # might as well lift this out of the loop insert = table.insert() for datum in data: statement = insert.values(**datum).returning(tab

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-28 Thread Javier Collado Jiménez
Is there a way, at least, of preventing commit in every insert? Doing that: for datum in data: statement=table.insert().values(**datum).returning(table.c.rowid) inserted_rowids=conn.execute(statement) rowid=inserted_rowids.fetchone()[0] th

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-27 Thread Mike Bayer
On Wed, Nov 27, 2019, at 1:05 PM, Javier Collado Jiménez wrote: > One more thing about returning data. When I insert rows one by one, it works: > for datum in data: > statement=table.insert().values(**datum).returning(table.c.rowid) > inserted_rowids=conn.execute(statement) > rowid=inserted_r

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-27 Thread Javier Collado Jiménez
One more thing about returning data. When I insert rows one by one, it works: for datum in data: statement=table.insert().values(**datum).returning(table.c.rowid) inserted_rowids=conn.execute(statement) rowid=inserted_rowids.fetchone()[0]

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-26 Thread Javier Collado Jiménez
You nailed it! (it almost runs out of the box) The only change needed is: return sqlalchemy.and_(*conditions) instead of return sqlalchemy.and_(conditions) THANK YOU!! El martes, 26 de noviembre de 2019, 14:11:06 (UTC+1), Simon King escribió: > > Something like this perhaps? (untested)

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-26 Thread Simon King
Something like this perhaps? (untested) def getwhereclause(table, filters): conditions = [] for colname, value in filters.items(): column = table.c[colname] conditions.append(column == value) return sqlalchemy.and_(conditions) whereclause = getwhereclause(table, filter

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-26 Thread Javier Collado Jiménez
Is there an easy way to construct the where clause for update with a dictionary? I'm trying statement=table.update().where(**filters).values(**datum).returning(table.c.rowid) but it doesn't work. Thank you!! El miércoles, 20 de noviembre de 2019, 16:39:36 (UTC+1), Mike Bayer escribió: > > >

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-21 Thread Javier Collado Jiménez
Thank you, it worked perfectly! El miércoles, 20 de noviembre de 2019, 16:39:36 (UTC+1), Mike Bayer escribió: > > > > On Wed, Nov 20, 2019, at 9:05 AM, Javier Collado Jiménez wrote: > > Hello, > > Using ORM, i'm inserting like that: > > session.add(table_mapper(**datum)) > > And updating: > > ses

Re: [sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-20 Thread Mike Bayer
On Wed, Nov 20, 2019, at 9:05 AM, Javier Collado Jiménez wrote: > Hello, > > Using ORM, i'm inserting like that: > > session.add(table_mapper(**datum)) > > And updating: > > session.query(dest_table).filter_by(**filters).filter(filter_column > > from_date).update(datum, synchronize_session=F

[sqlalchemy] Accessing rowid when adding or merging in Oracle

2019-11-20 Thread Javier Collado Jiménez
Hello, Using ORM, i'm inserting like that: session.add(table_mapper(**datum)) And updating: session.query(dest_table).filter_by(**filters).filter(filter_column > from_date).update(datum, synchronize_session=False) Is there a way to get returning rowid of the rows affected. I want to keep th