Re: Consecutive Inserts Freeze Execution of Psycopg3
От | Adrian Klaver |
---|---|
Тема | Re: Consecutive Inserts Freeze Execution of Psycopg3 |
Дата | |
Msg-id | a565b356-d3d4-21e6-054c-7eca541daee6@aklaver.com обсуждение исходный текст |
Ответ на | Re: Consecutive Inserts Freeze Execution of Psycopg3 ("Michael P. McDonnell" <bzaks1424@gmail.com>) |
Список | psycopg |
On 4/23/23 14:55, Michael P. McDonnell wrote: > That helped a ton, I don't understand why I've had to rewrite the crap > out of all of this to get it to work (dropping SqlAlchemy, upgrading > from psycopg2 to psycopg, etc...) but it's working now and I can work > around it. Thank you. Well: 1) SQLAlchemy is an ORM that tries to make all databases look the same. 2) psycopg2 != psycopg. For details see: https://www.psycopg.org/psycopg3/docs/basic/from_pg2.html 3) It would have been more of a surprise if you did not have to change anything. 4) And this with self.connection.cursor() as conn: was just plain wrong. You where trying to make a cursor be a connection and that is not going to work. > > > On Sun, Apr 23, 2023 at 4:25 PM Adrian Klaver <adrian.klaver@aklaver.com > <mailto:adrian.klaver@aklaver.com>> wrote: > > On 4/23/23 13:45, Michael P. McDonnell wrote: > > Python 3.10.6 > > psycopg library 3.1.8 > > > > Running consecutive inserts sourced in files. > > All inserts are of the same format: > > > > INSERT INTO _____ (field1, field2, field3) > > SELECT field1, field2, field3 FROM ____, Join ___, join ___ etc... > > > > The code I've written is this: > > > > for qi in range(qlen): > > query = queries[qi] > > qparams = params[qi] > > with self.connection.cursor() as conn: > > conn.execute(query, qparams) > > In above you are running the context manager(with) over the cursor not > the connection. This will not automatically commit the transaction. You > will need to either explicitly do connection.commit() or use the with > over the connection per: > > https://www.psycopg.org/psycopg3/docs/basic/transactions.html > <https://www.psycopg.org/psycopg3/docs/basic/transactions.html> > > > > > When I run the queries in dbeaver - the first query takes 120s (it's > > 1.9M rows), the second query takes 2s (7000 rows). > > When I run the queries in python - it freezes on the second query. > > > > Any guidance on how to attack this would be awesome as I have > re-written > > my code a dozen times and am just slinging mud to see what sticks. > > -- > Adrian Klaver > adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com> > -- Adrian Klaver adrian.klaver@aklaver.com
В списке psycopg по дате отправления: