From 5adbf9724ad19eb6821a9b952718d31714c7fcb2 Mon Sep 17 00:00:00 2001 From: Robin5605 Date: Wed, 19 Jul 2023 13:06:05 -0500 Subject: [PATCH 1/2] Rollback SQLAlchemy bulk insert --- src/mainframe/endpoints/package.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mainframe/endpoints/package.py b/src/mainframe/endpoints/package.py index dff7b580..9d2fb8d4 100644 --- a/src/mainframe/endpoints/package.py +++ b/src/mainframe/endpoints/package.py @@ -6,7 +6,6 @@ from letsbuilda.pypi.async_client import PyPIServices # type: ignore from letsbuilda.pypi.exceptions import PackageNotFoundError from sqlalchemy import select -from sqlalchemy.dialects.postgresql import insert from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload @@ -204,8 +203,14 @@ async def batch_queue_package( rows.append(scan) - await session.execute(insert(Scan).values(rows).on_conflict_do_nothing()) - await session.commit() + async with session.begin(): + for row in rows: + try: + async with session.begin_nested(): + session.add(row) + except IntegrityError: + print("Skipping duplicate") + pass @router.post( From 8a2b09618e2a10b68765ac08c32fccac867a64ea Mon Sep 17 00:00:00 2001 From: Robin5605 Date: Wed, 19 Jul 2023 19:40:26 -0500 Subject: [PATCH 2/2] lint --- src/mainframe/endpoints/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mainframe/endpoints/package.py b/src/mainframe/endpoints/package.py index a9347d62..9d2fb8d4 100644 --- a/src/mainframe/endpoints/package.py +++ b/src/mainframe/endpoints/package.py @@ -202,7 +202,7 @@ async def batch_queue_package( ) rows.append(scan) - + async with session.begin(): for row in rows: try: