전체 글 1331

[Python] SQLAlchemy - UPDATE 문

개요2025.06.24-[Python] SQLAlchemy - INSERT 하기에서 SQLAlchemy를 사용해 테이블에 데이터를 INSERT 하는 방법을 알아보았다. 이번 글에서는 테이블에 있는 데이터를 갱신하는 방법을 알아본다. UPDATEupdate는 insert와 유사한 방식으로 수행할 수 있다. update 함수를 사용해 UPDATE 문을 나타내는 새로운 객체를 생성한 뒤, where() 함수를 사용해 데이터를 갱신할 조건을 지정하고 values() 함수를 사용해 갱신한 값을 지정한다. 아래 예시 코드는 UPDATE를 수행하는 기본적인 방법이다.from sqlalchemy import updatestmt = ( update(user_table) .where(user_table.c...

Python 2025.07.07

[MySQL] WHERE ~ IN - 다중 컬럼 지정

개요데이터베이스에서 데이터를 조회하다 보면 여러 컬럼에 대한 조건을 OR 조건으로 연달아 나열해야 하는 경우가 있다. SELECT * FROM table1 WHERE (column1 = value1 AND column2 = value2) OR (column1 = value3 AND column2 = value4) OR (column1 = value5 AND column2 = value6);나열할 조건이 많아질수록 쿼리도 길어지고 보기 어려운데, IN 조건을 활용하면 조금 더 가독성 있는 쿼리를 작성할 수 있다.문법을 적어둔다. 다중컬럼 IN 조건일반적으로 단일 컬럼을 예로 들은 문서가 많아서 몰랐는데, 조건절에 사용할 컬럼을 소괄호로 묶어서 나열하고, 값도 동일하게 소괄호로 묶어서 ..

Database 2025.07.04

[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 - SELECT 하기

개요2025.06.24-[Python] SQLAlchemy - INSERT 하기에서 SQLAlchemy를 사용해 데이터를 테이블에 삽입했다. 이번 글에서는 테이블에 저장한 데이터를 조회해보려고 한다. SELECTselect() 함수는 insert() 함수와 동일한 방식으로 작성한다. from sqlalchemy import selectstmt = select(user_table).where(user_table.c.name == "spongebob")print(stmt.compile())다른 SQL문과 동일하게 구문을 실제로 실행할 때는 execute() 함수에 전달한다. SELECT문의 경우에는 행을 반환하기 때문에 실행 결과로 반환받은 객체를 순회해서 데이터에 접근할 수 있다. 조회할 컬럼을 명시적..

Python 2025.07.02

[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

[Python] SQLAlchemy - SQL 표현 언어와 메타데이터

개요2025.02.25-[Python] sqlalchemy - Trino 다루기에서 SQLAlchemy를 사용해 SQL을 수행하는 방법을 적어두었었다. 그런데 최근에 공식 문서를 보니 SQL문을 문자열로 작성하고 처리하는 것이 아니라 python 코드로 작성하여 처리하고 있는 것을 보았다. 이는 SQLAlchemy의 주요 특징 중 하나인 'SQL 표현 언어(SQL Expression Language)' 기능으로, 이번 글에서는 이 기능에 대해서 좀 알아보려고 한다. 메타데이터일반적으로 메타데이터는 ㅇ데이터를 설명하는 데이터를 의미한다. 즉, 데이터의 형식 및 구조를 나타내는 데이터이다. 하지만 SQLAlchemy에서는 SQL 표현 언어가 기반으로 하는 Python 객체를 통칭한다. 테이블, 열과 같..

Python 2025.06.27

[Python] Click - 명령행 인자 전달

개요이전에 2023.01.30-[Python] 명령행 인자 전달 - 2을 통해 Python 실행 시 명령행 인자를 전달하고 파싱하는 방법에 대해서 알아보았다. 최근 업무를 하면서 비슷한 기능을 제공하는 Click이라는 라이브러리가 존재함을 알게되었는데, 이번 글에서는 Click 라이브러리 사용법에 대해서 간단히 적어두려고 한다. ClickClick은 최소한으 코드로 명령줄 인터페이스를 만들기 위한 Python 패키지이다. 명령줄 인터페이스 생성 키드라고 말할 수 있다.크게 명령줄 임의 중첩, 도움말 자동 생성, 런타임에서 하위명령어의 느린 로딩을 지원한다. 그리고 Unix/POSTFIX 명령줄 규약 구현을 지원하고, 환경 변수에서 값을 즉시 로드할 수 있도록 한다. 이외 여러 기능을 제공하고 있는데,..

Python 2025.06.26

[Linux] (CRON) info (No MTA installed, discarding output)

개요운영 중인 서버의 루트 영역에서 용량을 많이 사용하고 있다는 알람을 받았다. 확인해 보니 /var/log/info.log 라는 파일의 용량이 컸고, 아래와 같은 로그가 반복적으로 발생하고 있었다.Jun 17 08:21:52 ec2 CRON[3378698]: (CRON) info (No MTA installed, discarding output)Jun 17 08:21:52 ec2 CRON[3378707]: (CRON) info (No MTA installed, discarding output)원인을 파악하고 현상을 해소해보자. 원인cron 작업은 실행 중 발생한 출력을 사용자에게 이메일로 전송하고자 한다. 그 과정에서 postfix와 같은 메일 서버가 설치되어 있지 않아 발생하는 오류이다. 해당 로..

Linux 2025.06.25

[Jenkins] job 이관하기

개요EKS 업그레이드를 작업하던 중 사이드 이펙트로 클러스터에서 동작하던 Jenkins의 볼륨 위치가 변경되었다. 이에 따라 기존에 생성했던 Job을 신규 경로로 이관하고자 한다.방법을 적어둔다. JENKINS_HOME방법을 알아보기에 앞서 JENKINS_HOME의 구조에 대해서 먼저 적어둔다. Jenkins는 빌드를 수행하고 아카이브를 보관하기 위해 디스크 공간을 필요로 하는데, 이 공간이 JENKINS_HOME이다. JENKINS_HOME의 위치는 Jenkins 구성 화면에서 확인할 수 있고, 기본적으로 ~/.jenkins로 설정되어 있다. 필요한 경우에는 JENKINS_HOME 환경변수나, JENKINS_HOME이라는 시스템 속성에 값을 지정하며 원하는 경로를 홈 경로로 설정할 수 있다. JEN..

Jenkins 2025.06.24