목록2025/12/30 (6)
cmod.ify
ORM (Object Relational Mapping)객체 지향 프로그래밍의 '객체(Class)'와 관계형 데이터베이스의 '테이블(Table)'을 자동으로 연결해 주는 기술입니다.(1) 장점과 단점장점:DB 독립성: 코드를 수정하지 않고도 MySQL에서 Oracle이나 PostgreSQL로 쉽게 교체 가능합니다.객체 지향적: SQL 문장이 아닌 파이썬 코드로 데이터를 다루므로 생산성이 높습니다.유지보수: 테이블 구조가 바뀌어도 클래스만 수정하면 되어 관리가 편합니다.단점:성능 이슈: 매우 복잡한 통계 쿼리 등은 직접 SQL을 쓰는 것보다 느릴 수 있습니다.학습 곡선: SQL 외에 ORM 자체의 문법을 배워야 합니다.9. SQLAlchemy 실습 정리파이썬에서 가장 강력하고 널리 쓰이는 ORM 라이브러리..
1. 데이터베이스 접속 준비물프로그래밍 언어(Python)가 DB에 접속하려면 다음의 5가지 정보가 반드시 필요함.Host: 서버 위치 (내 컴퓨터라면 localhost 또는 127.0.0.1)Port: MariaDB 기본값은 3306Database: 접속할 DB 이름 (예: hapi)User/PW: 접속 계정 및 비밀번호Driver: 인터페이스 역할을 하는 라이브러리 (파이썬용: pymysql)2. 환경 설정 및 드라이버 설치터미널(또는 CMD)에서 아래 명령어로 라이브러리를 설치함.pip install pymysql3. 데이터베이스 접속 및 해제안전한 연동을 위해 try-except-finally 구문을 사용하는 것이 정석임.import pymysqlcon = Nonetry: con = pymy..
1. 트리거 (TRIGGER): "자동 실행기"특정 테이블에 이벤트(INSERT, UPDATE, DELETE)가 발생하면 자동으로 실행되는 개체임.주요 용도:유효성 검사: 데이터가 삽입/수정될 때 올바른 값인지 확인.로그/감사(Logging/Audit): 데이터가 언제, 누구에 의해 바뀌었는지 기록 보관.주의사항: 트리거 내에서는 트랜잭션 제어 문장(COMMIT, ROLLBACK)을 사용할 수 없음.기본 문법:CREATE TRIGGER 트리거이름{BEFORE | AFTER} {INSERT | UPDATE | DELETE} -- 실행 시점과 사건ON 테이블이름FOR EACH ROW -- 행마다 실행BEGIN -- 실행할 SQL 문장END;2. 인덱스 (INDEX): "빠른 검색을 위한 색인"데이터 조..
가상의 테이블: VIEW, CTE, 임시 테이블1. 인라인 뷰 (Inline View)정의: FROM 절 안에 직접 작성된 서브쿼리임.특징: 쿼리가 실행되는 동안만 잠깐 메모리에 생성되었다가 사라지는 임시 테이블임.사용 예: 복잡한 필터링을 미리 해두고, 그 결과에서 다시 조회하고 싶을 때 사용함.SELECT * FROM (SELECT * FROM tCity) A; -- 'A'라는 별명을 붙여 인스턴스처럼 사용2. 뷰 (VIEW)정의: SELECT 구문 자체를 데이터베이스에 저장해두고, 마치 테이블처럼 부르는 가상 테이블임.장점:속도: 주기억장치(메모리)에 저장되어 실행 속도가 빠름.보안: 사용자에게 실제 테이블의 모든 컬럼을 보여주지 않고 필요한 것만 보여줌.편의성: 쿼리가 길어지는 것을 방지함.주의:..
많이 취약했던 문제인 것 같다 과일을 왼쪽에서 부터 일단 뺀다(pop)그리고 뺀 과일 종류의 개수를 센다(fruit)현재 과일 종류를 몇개 가지고 있는지 센다 (cur_f)두 종류가 넘으면 왼쪽에서부터 뺀다(종류 개수도 빼야 함)위 과정을 진행하면서 제일 많이 가지고 있던 과일의 수를 기억한다(answer) import sysfrom collections import dequeinput = sys.stdin.readlinen = int(input())tanghuru = list(map(int, input().strip().split()))q = deque()fruit = [0 for _ in range(10)]cur_f = 0answer = 0for f in tanghuru: q.append(f)..
문제 이해 1이면 가고 2면 출발 0이면 벽임 못 도달 하는 곳은 -1로 출력 해야함 그럼 모든 곳을 -1로 초기화하고 나머지는 거리를 이전거리에서 하나씩 더하면 될 것 같음 출력 예시 보니까 bfs인 것 같음. 입력값보니까 dfs하면 어차피 시간초과임 ======================================== 코드 계획 입력 받기 N, M 저장 N 번 반복하면서 입력 받는데 2부터 탐색 해야 하니까 저장(x,y) 네방향 이동할 dx, dy 리스트 생성 -1로 초기화한 answer 배열 생성 방문 여부 visited 배열은 False로 초기화 큐에 2의 x,y좌표 저장 방문처리 answer 처음위치 0으로 정하기 q가 비어있지 않을 동안 반복 curx, cury에 q pop해서 저장 네 ..
