Does this table have triggers of some kind on it ?  I've been asking on the
psycopg2 list about this as this is not the first time this has come up.

On Dec 23, 2016 8:46 AM, "mike bayer" <mike...@zzzcomputing.com> wrote:

> those are two different kinds of INSERT statements.   To compare to Core
> you need to run like this:
>
>
>      engine.execute(
>        TrialLocations.__table__.insert(),
>        trial_location_core_inserts
>      )
>
> that will run executemany() on the psycopg2 side, which internally will
> run 223 INSERT statements.   On a normal setup this should run like
> lightning, 223 is extremely low.   You may have some unusual network
> overhead.   In the old days we'd say the table needs to be vacuumed but I
> had the impression that by the 9.x series this is mostly automatic, though
> maybe try running vacuuming on that table (https://www.postgresql.org/do
> cs/9.1/static/sql-vacuum.html)
>
>
>
> On 12/23/2016 03:25 AM, Brian Clark wrote:
>
>> So I'm having an issue with a very slow insert, I'm inserting 223 items
>> and it takes 20+ seconds to execute. Any advice on what I'm doing wrong
>> and why it would be so slow? Using Postgresql 9.4.8
>>
>> The line of code
>>
>>     LOG_OUTPUT('==========PRE BULK==========', True)
>>     db_session.bulk_save_objects(trial_location_inserts)
>>     LOG_OUTPUT('==========POST BULK==========', True)
>>
>> And here's the log from sqlalchemy echo
>>
>>     2016-12-23 07:37:52.570: ==========PRE BULK==========
>>     2016-12-22 23:37:52,572 INFO sqlalchemy.engine.base.Engine INSERT
>> INTO trial_locations (status, trial_id, location_id, active) VALUES
>> (%(status)s, %(trial_id)s, %(location_id)s, %(active)s)
>>     2016-12-22 23:37:52,572 INFO sqlalchemy.engine.base.Engine
>> ({'status': u'Completed', 'active': True, 'location_id': 733,
>> 'trial_id': 126625}, {'status': u'Completed', 'active': True,
>> 'location_id': 716, 'trial_id': 126625}, {'status': u'Completed',
>> 'active': True, 'location_id': 1033, 'trial_id': 126625}, {'status':
>> u'Completed', 'active': True, 'location_id': 1548, 'trial_id': 126625},
>> {'status': u'Completed', 'active': True, 'location_id': 1283,
>> 'trial_id': 126625}, {'status': u'Completed', 'active': True,
>> 'location_id': 1556, 'trial_id': 126625}, {'status': u'Completed',
>> 'active': True, 'location_id': 4271, 'trial_id': 126625}, {'status':
>> u'Completed', 'active': True, 'location_id': 1567, 'trial_id': 126625}
>>  ... displaying 10 of 223 total bound parameter sets ...  {'status':
>> u'Completed', 'active': True, 'location_id': 1528, 'trial_id': 126625},
>> {'status': u'Completed', 'active': True, 'location_id': 1529,
>> 'trial_id': 126625})
>>     2016-12-23 07:38:14.270: ==========POST BULK==========
>>
>>
>> Also for comparison I rewrote it in Sqlalchemy core
>>
>>
>>     LOG_OUTPUT('==========PRE BULK==========', True)
>>     engine.execute(
>>       TrialLocations.__table__.insert().values(
>>         trial_location_core_inserts
>>       )
>>     )
>>     # db_session.bulk_save_objects(trial_location_inserts)
>>     LOG_OUTPUT('==========POST BULK==========', True)
>>
>> and it ran in 0.028 seconds
>>
>>     2016-12-23 08:11:26.097: ==========PRE BULK==========
>>     ...
>>     2016-12-23 08:11:27.025: ==========POST BULK==========
>>
>> I'd like to keep it in session for the sake of this being the end part
>> of a transaction and if the whole thing fails I want it all to rollback.
>> Am I doing something wrong? I don't need the data afterwards it just
>> needs to be saved
>>
>> Help appreciated!
>>
>> --
>> 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
>> <mailto:sqlalchemy+unsubscr...@googlegroups.com>.
>> To post to this group, send email to sqlalchemy@googlegroups.com
>> <mailto:sqlalchemy@googlegroups.com>.
>> Visit this group at https://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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 post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to