From e685a1d2981d33ebb55cabd13f6d3d897e539460 Mon Sep 17 00:00:00 2001 From: Todd Birchard Date: Thu, 31 Aug 2023 08:33:15 -0400 Subject: [PATCH] Minor refactor. --- sqlalchemy_tutorial/.flake8 | 3 +++ sqlalchemy_tutorial/part1_connections/__init__.py | 1 + sqlalchemy_tutorial/part1_connections/queries.py | 8 +++++--- sqlalchemy_tutorial/part2_orm/orm.py | 12 ++++++------ 4 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 sqlalchemy_tutorial/.flake8 diff --git a/sqlalchemy_tutorial/.flake8 b/sqlalchemy_tutorial/.flake8 new file mode 100644 index 0000000..44628db --- /dev/null +++ b/sqlalchemy_tutorial/.flake8 @@ -0,0 +1,3 @@ +[flake8] +select = E9,F63,F7,F82 +exclude = .git,.github,__pycache__,.pytest_cache,.venv,logs,creds \ No newline at end of file diff --git a/sqlalchemy_tutorial/part1_connections/__init__.py b/sqlalchemy_tutorial/part1_connections/__init__.py index 31da1a1..d5fa57c 100644 --- a/sqlalchemy_tutorial/part1_connections/__init__.py +++ b/sqlalchemy_tutorial/part1_connections/__init__.py @@ -1,3 +1,4 @@ +"""Demonstrate how to execute raw SQL queries using SQLAlchemy.""" from database import engine from .queries import fetch_job_listings, update_job_listing diff --git a/sqlalchemy_tutorial/part1_connections/queries.py b/sqlalchemy_tutorial/part1_connections/queries.py index 70e168e..218803e 100644 --- a/sqlalchemy_tutorial/part1_connections/queries.py +++ b/sqlalchemy_tutorial/part1_connections/queries.py @@ -1,5 +1,6 @@ """Execute raw SQL queries against an SQLAlchemy engine.""" from typing import List, Optional +import json from sqlalchemy import text from sqlalchemy.engine.base import Engine @@ -17,17 +18,18 @@ def fetch_job_listings(engine: Engine) -> Optional[List[dict]]: :return: Optional[List[dict]] """ try: + LOGGER.info("Fetching job listings...") with engine.begin() as conn: result = conn.execute( text( "SELECT job_id, agency, business_title, \ salary_range_from, salary_range_to \ - FROM nyc_jobs ORDER BY RAND() LIMIT 10;" + FROM nyc_jobs ORDER BY RAND() LIMIT 5;" ), ) results = result.fetchall() results_dict = [row._asdict() for row in results] - LOGGER.info(f"Selected {result.rowcount} rows.") + LOGGER.info(f"Selected {result.rowcount} rows: {json.dumps(results_dict, indent=2)}") return results_dict except SQLAlchemyError as e: LOGGER.error(f"SQLAlchemyError while fetching records: {e}") @@ -52,7 +54,7 @@ def update_job_listing(engine: Engine) -> Optional[List[dict]]: WHERE job_id = 229837;" ) ) - LOGGER.info(f"Updated {result.rowcount} row: {result}") + LOGGER.success(f"Updated {result.rowcount} row: {result}") return result except SQLAlchemyError as e: LOGGER.error(f"SQLAlchemyError while updating records: {e}") diff --git a/sqlalchemy_tutorial/part2_orm/orm.py b/sqlalchemy_tutorial/part2_orm/orm.py index af067ba..5ba4518 100644 --- a/sqlalchemy_tutorial/part2_orm/orm.py +++ b/sqlalchemy_tutorial/part2_orm/orm.py @@ -21,11 +21,11 @@ def orm_create_user(session: Session, user: User) -> User: LOGGER.success(f"Created new user: {user}") return user except IntegrityError as e: - LOGGER.error(e.orig) - raise e.orig + LOGGER.error(f"IntegrityError when creating user: {e}") except SQLAlchemyError as e: + LOGGER.error(f"SQLAlchemyError when creating user: {e}") + except Exception as e: LOGGER.error(f"Unexpected error when creating user: {e}") - raise e def orm_delete_user(session: Session, user: User): @@ -42,8 +42,8 @@ def orm_delete_user(session: Session, user: User): session.commit() # Commit the change LOGGER.success(f"Deleted user: {user}") except IntegrityError as e: - LOGGER.error(e.orig) - raise e.orig + LOGGER.error(f"IntegrityError when deleting user: {e}") except SQLAlchemyError as e: + LOGGER.error(f"SQLAlchemyError when deleting user: {e}") + except Exception as e: LOGGER.error(f"Unexpected error when deleting user: {e}") - raise e