Database/SQL5 SQLAlchemy에서 Transaction사용하기 SQLAlchemy에서는 Transaction을 사용하여 with 구문이 정상 실행시에 commit되고 구문내에서 예외 발생시에 rollback 되도록 할 수 있다. Commit As You Go SQLAlchemy 2.0 이상부터 제공되는 기능. 공식문서에 아래와 같이 안내되어 있다. 1.4 버전에서 테스트 해보니, commit()실행과 상관없이 각 실행이 autocommit되며 connection에서 commit()을 지원하지 않는다. New in version 2.0: “commit as you go” style is a new feature of SQLAlchemy 2.0. It is also available in SQLAlchemy 1.4’s “transitional” mode when usi.. 2024. 1. 21. PostgreSQL, MariaDB/MySQL 테이블 별 용량 확인 하기 각 DB엔진 별로 데이터베이스의 테이블 별 용량을 가져오는 쿼리이다. 아래 쿼리의 결과는 KB단위로 출력되나, 필요에 따라서 수식을 수정해서 MB나 GB로 고쳐서 사용하면 된다. PostgreSQL SELECT table_name, ROUND(pg_relation_size(table_name::regclass) / (1024), 2) AS data_size_kb, ROUND(pg_indexes_size(table_name::regclass) / (1024), 2) AS index_size_kb, ROUND(pg_total_relation_size(table_name::regclass) / (1024), 2) AS total_size_kb FROM information_schema.tables WHERE .. 2023. 12. 17. Recursive Query(재귀 쿼리) 알아보기 재귀쿼리란? 재귀쿼리는 쿼리 내에서 자기자신을 참조하여 반복적으로 실행되는 쿼리이다. 즉, 쿼리가 반복적으로 실행되면서 이전 단계의 결과를 이용하여 현재 단계의 결과를 도출해 내는 것을 반복하여 최종 결과를 반환한다. 재퀴쿼리는 주로 계층적인 데이터 구조를 다룰 때 유용하게 사용된다. 재귀쿼리 구조 재귀 쿼리를 만들기 위해 CTE(공통 테이블 식, Common Table Expressions)을 활용한다. CTE는 쿼리에서 임시적으로 사용할 수 있는 이름이 지정된 일시적인 결과 집합이다. CTE는 WITH 절을 사용하여 정의되며, 재귀 쿼리의 시작 지점과 재귀 쿼리 자체를 정의하는 두 부분으로 구성된다. WITH RECURSIVE cte_name [(col1, col2 ...)] AS ( -- 초기 쿼리.. 2023. 7. 16. 데이터베이스에서의 Transaction (트랜잭션) Transaction(트랜잭션) 이란? 데이터베이스 트랜잭션(Transaction)은 데이터베이스에서 논리적인 작업 단위를 묶어서, 하나의 논리적인 작업으로 처리하기 위한 것이다. 트랜잭션은 여러 개의 쿼리나 명령어를 수행할 때, 그룹 단위로 묶어서 하나의 작업으로 처리한다. 따라서 작업이 끝까지 수행되거나, 전혀 수행되지 않도록 보장(All or Nothing)하는 것이 특징이다. 은행 계좌의 데이터베이스를 생각해 봤을 때, "Alice가 Bob에게 100$ 이체"라는 하나의 event에 대해서 아래 4개의 update 쿼리가 필요하다고 하자. UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; --잔액 테이블에서 앨리스 잔액 - .. 2023. 4. 23. 이전 1 2 다음