python 283

[Python] json.dump - TypeError: Object of type datetime is not JSON serializable

개요데이터를 다루다 보면 딕셔너리 형식의 데이터를 JSON 형식으로 변환해야 하는 경우가 종종 있다. 이때 데이터에 큰 문제가 없어서 JSON 형식으로 잘 변환이 되면 좋지만, 아래처럼 오류가 나는 상황이 발생할 수도 있다.import jsonfrom datetime import datetimedata = { 'create_dt': datetime.now(), 'name': 'june', 'age': 22,}print(json.dumps(data))내 경우에는 주로 날짜 형식 데이터를 변환하다가 발생하곤 하는데, 아주 간편하게 문제를 해결하는 방법을 적어둔다. 원인 TypeError: Object of type datetime is not JSON serializableJSON은 문자..

Python 2025.11.21

[Python] traceback - 예외 메세지 추적하기

개요프로그래밍을 하다 보면 프로그램 종료를 방지하기 위해 try ~ except 구문으로 특정 예외가 아니라 예외 전체를 처리하게 되는 경우 가 있다. 모든 예외를 처리하면 어찌어찌 프로그램은 동작하지만 예상하지 못한 예외로 인해 버그가 발생할 때 예외 메시지가 없어 디버깅이 어려운 상황이 있었다.때문에 이번 글에서는 예외 메세지를 다룰 수 있는 traceback이라는 모듈이 조금 살펴보려고 한다. tracebacktraceback은 Python 프로그램의 Stack Trace를 추출하고 포맷팅, 출력하는 표준 인터페이스를 제공한다. Python 인터프리터가 Stack Trace를 출력할 때의 동작을 재현하며, 프로그램 제어 하에서 Stack Trace을 출력하려는 경우에 유용하다. print_tbt..

Python 2025.11.17

[Pandas] to_sql 함수로 UPSERT 수행하기

개요이전에 SQLAlchemy 사용법, 문법 등을 한창 정리했었는데, 사실 이는 Pandas DataFrame을 데이터베이스 테이블로 저장할 때 UPSERT를 수행하는 방법을 정리하기 위함이었다……!2025.07.10-[Python] SQLAlchemy - UPSERT 수행하기에서 SQLAlchemy로 MySQL에 UPSERT를 수행하는 방법은 정리해 두었다. 이번 글에서는 Pandas의 to_sql 함수로 수행하는 방법을 적어둔다. 작업할 데이터베이스는 기존과 동일하게 MySQL로 한다. pandas.DataFrame.to_sql아래는 to_sql 함수의 매개변수 정의이다.DataFrame.to_sql(name, con, *, schema=None, if_exists='fail', index=True..

[Python] psycopg2 - PostgreSQL 실행 SQL 출력

개요여러 데이터베이스 엔진과 연동하는 라이브러리는 대체로 여러 매개변수를 매핑할 수 있게 하는 placeholder를 지원한다. 이는 쿼리를 반복해서 실행할 때 유용하지만 실제 실행되는 쿼리를 한눈에 확인할 수 없다는 불편함이 있는데, 알아보니 execute 함수로 실행되는 SQL문을 확인할 수 있는 방법이 있다고 해서 적어둔다. psycopg2.cursor.mogrifymogrify 함수는 값을 자리대체자에 바인딩하여 SQL 쿼리 문자열을 포매팅하는 방법으로, 이는 cursor.execute 또는 유사한 메서드가 데이터베이스로 전송하는 문자열과 일치한다. 반환 문자열은 항상 바이트 문자열이다. 사용 예시import psycopg2sql = f"""\SELECT *FROM employeesWHERE S..

Python 2025.09.01

[Python] line_profiler - 성능 분석 도구

개요Python으로 개발하고 테스트를 수행하다 보면 개발한 코드의 성능을 확인하고 개선해야 할 필요가 있다. 이때 프로파일링을 활용할 수 있는데, 프로파일링이란 프로그램의 시간 복잡도, 메모리 정보, 함수 호출 주기, 빈도 등을 분석하는 것이다. Python에서는 cprofile, profile과 같은 모듈을 제공하고 있다. 이번 글에서는 Python 기본 모듈은 아니지만, 프로파일링 도구 중 하나인 line_profiler에 대해서 알아보고자 한다. line_profilerline_profiler는 함수의 줄 별 프로파일링을 수행하는 도구다. pip로 설치할 수 있고, Jupyter 노트북에서 매직 커멘드를 통해 활용할 수도 있다. 설치 명령어는 다음과 같다.pip install line_profil..

Python 2025.08.01

[Python] SQLAlchemy - UPSERT 수행하기

개요이전 글에서 SQLAlchemy를 사용해 테이블 생성과 데이터 삽입, 갱신, 삭제 등의 기본적인 데이터베이스 작업을 수행하는 방법을 알아보았다.이번 글에서는 UPSERT를 구현하는 방법을 알아보려고 한다. UPSERT의 경우에는 데이터베이스 엔진마다 쿼리문이 조금씩 다른데 이 글에서는 MySQL을 기준으로 적어두려고 한다. Dialectsdialect란 SQLAlchemy가 다양한 DBAPI를 구현하고 데이터베이스와 통신하는 데 사용하는 시스템이다. 이를 위해서는 적절한 DBAPI 드라이버가 설치되어 있어야 한다.SQLAlchemy는 PostgreSQL, MySQL, MariaDB, SQLite, Oracle, Microsoft SQL Server에 대한 dialect를 포함하고 있다. 이외의 데이..

Python 2025.07.14

[Python] SQLAlchemy - DELETE 문

개요2025.07.02-[Python] SQLAlchemy - UPDATE 문 에서 SQLAlchemy를 사용해 테이블에 데이터를 UPDATE 하는 방법을 알아보았다. 이번 글에서는 테이블에 있는 데이터를 삭제하는 방법을 알아본다. DELETEinsert, update를 수행할 때와 마찬가지로 deleted() 함수로 DELETE 문을 나타내는 객체를 생성하여 작업을 수행할 수 있다. 기본적인 사용 방법은 아래와 같다.from sqlalchemy import deletestmt = delete(user_table).where(user_table.c.name == "patrick")print(stmt) 영향받는 행의 수 확인DELETE 수행에 영향을 받는 행의 수를 확인하고 싶을 때는 쿼리를 수행한 결..

Python 2025.07.11

[Python] SQLAlchemy - 조건절 지정하기

개요2025.06.25-[Python] SQLAlchemy - SELECT 하기에서 데이터베이스 테이블의 데이터를 조회하는 방법을 알아보았다. 이번 글에서는 조건에 맞는 데이터를 필터링하는 WHERE 절을 사용하는 방법을 적어둔다. WHEREWHERE 절은 Select.where() 메서드에 원하는 조건을 지정하여 생성할 수 있다.from sqlalchemy import selectstmt = select(user_table).where(user_table.c.name == "spongebob")print(stmt.compile()) ANDAND로 연결된 조건절을 생성할 때는 Select.where()을 필요한 만큼 호출한다.from sqlalchemy import selectstmt = (selec..

Python 2025.07.03

[Python] SQLAlchemy - INSERT 하기

개요2025.06.20-[Python] SQLAlchemy - SQL 표현 언어와 메타데이터에서 SQLAlchemy로 데이터베이스 테이블을 다루는 방법을 알아보았는데, 이번 글에서는 테이블에 데이터를 추가하는 방법을 적어둔다. InsertSQL INSERT문은 insert() 함수를 사용해 생성한다. insert() 함수는 SQL에서의 INSERT문을 나타내는 새로운 insert 객체를 생성해 테이블에 새로운 데이터를 추가한다.insert() 함수는 아래와 같이 매개변수로 데이터를 추가할 테이블을 지정하고 values 속성으로 컬럼과 값을 지정하면 된다.insert(TABLE_NAME).values(COLUMN_NAME=VALUE, COLUMN_NAME=VALUE) 아래 예시는 user_account라..

Python 2025.07.01

[Python] SQLAlchemy - 테이블 리플렉션

개요2025.06.20-[Python] SQLAlchemy - SQL 표현 언어와 메타데이터에서 데이터베이스의 테이블을 나타내는 Table 객체를 생성해 보았다. 이번 글에서는 데이터베이스 내의 테이블을 로드하여 자동으로 Table 객체를 생성하는 테이블 리플렉션에 대해서 적어둔다. 테이블 리플렉션테이블 리플렉션이랑 데이터베이스의 현재 상태를 읽어 Table과 관련 객체를 생성하는 프로세스를 의미한다. 테이블 객체를 Python으로 선언했던 방식과는 반대로 데이터베이스에서의 DDL을 사용해 Python 내에 데이터 구조를 생성한다.테이블 리플렉션으로 Table 객체를 생성할 때는 Table 생성자에 autoload_with 매개변수에 create_engine으로 생성한 engine 객체를 전달하면 된..

Python 2025.06.30