🚀 들어가며... Python에서 PostgreSQL을 사용하기 위해서는 psycopg2 라이브러리를 사용합니다. 오늘은 psycopg2 라이브러리의 간단한 사용법과 트랜잭션 ID 추출방법에 대해 알아보겠습니다. 📑 내용 Psycopg2란? Python에서 PostgreSQL을 사용하기 위해서는 psycopg2 라이브러리를 사용합니다. 해당 라이브러리의 공식 사이트와 GitHub은 다음과 같습니다. https://www.psycopg.org/docs/ https://github.com/psycopg/psycopg2/ JDBC와 같은 Database 커넥터이기 때문에 다음과 같은 기능을 제공합니다. Database 연결과 해제 SQL 실행과 트랜잭션 발생 결과 반환 Psycopg2은 Pyhton에서 사용되..
🚀 들어가며... 사내에서 속도지연으로 마스터 슬레이브 개념을 도입한다고 하여 관련하여 포스팅하고자 합니다. 실무에서 많이 쓰이기 때문에 개념은 숙지하셔야 합니다. 📑 내용 Master & Slave 개념 이해 먼저 MySQL Replication에 대한 이해가 수반되어야 합니다. MySQL Replication은 말 그대로 DB안 데이터를 갖다가 물리적으로 복사해 다른곳에 넣어두는 기술을 의미합니다. 그렇다면 이 기술을 가지고 어떤 효과를 얻을 수 있을까요? 우선 Main DB는 Master("1")와 그 외 Slave로 분산됩니다. 이 때, Master DB에 데이터 변경이 일어나면 Slave DB는 Master DB를 replicate하여 정보를 담아둡니다. 읽기 처리는 Slave DB를 통해 이루..
🚀 들어가며... 실무에서 많이 쓰이는 윈도우함수에 대해 정리하고자 하여 이번 포스팅을 준비하게 되었습니다! 윈도우함수를 적재적소에 쓸 줄 아는 능력을 갖춘다면 백개발자로써 한걸음 전진하는 계기가 될 것입니다. 이후에도 공부하면서 새로운 윈도우함수를 알게된다면 글에 추가할 예정입니다. 📑 내용 1. 윈도우함수란? 사전적 정의를 이야기 하자면, 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 WINDOW FUNCTION 입니다. 윈도우 함수를 사용하면 사용자가 분석 비즈니스 쿼리를 보다 효율적으로 생성할 수 있습니다. 창 함수는 결과 집합의 파티션, 즉 "창"에서 실행되어 해당 창에 속하는 모든 행에 대한 값을 반환합니다. 이와는 반대로 창이 없는 함수는 결과 집합의 모든 행에 대해 계산을 실행합니다...
🚀 들어가며... 한적한 오후, 커피를 마시며 쉬고있는데 운영기 키바나에 오류가 하나 접수되었습니다. 다음과 같은 오류이더군요. psycopg2.DataError: 오류: 정수 범위를 벗어남 오류의 원인을 분석하는데 쿼리상에는 문제가 전혀 없어보였는데 생각지않게 꿀팁 하나를 알게되어서 알려드리려고 합니다. 💌 소스코드 (보안문제로 소스코드 부분을 삭제했습니다.) 📑 내용 문제가 발생했던 쿼리문의 일부를 가져왔습니다. 쿼리를 보시게 되면 저는 처음에는 제일 위에 SUM으로 길게 묶인 TOT_PAY라는 임시컬럼이 숫자가 너무 커서 계산결과가 정수범위를 벗어난것은 아닐까? 하는 의심을 하게 됩니다. 하지만 FROM절에 테이블(보안으로 인한 익명의 테이블)을 조회해보았는데 SUM한 컬럼들이 모두 NUMERIC ..
🚀 들어가며... Query을 작성하다보면 SubQuery를 사용하는 경우가 많습니다. 한두개 정도 사용하면 괜찮지만 그 수가 많아질 수록 가독성이 떨어지며, 재사용할 수가 없어서 매번 같은 Query를 작성해줘야 하는 불편함이 있습니다. 이 문제점을 해소하는데 도움이 되는 WITH문에 대해서 정리해보았습니다. 💌 소스코드 WITH [ 별명1 ] [ (컬럼명1 [,컬럼명2]) ] AS ( SUB QUERY )[, 별명2 AS ... ] MAIN QUERY 기본형식은 다음과 같습니다. 📑 내용 WITH문의 특징은 다음과 같습니다. 이름을 가진 SubQuery를 정의한 후 사용하는 구문입니다. Query의 전체적인 가독성을 높이고, 재사용할 수 있는 장점이 있습니다. 대부분의 DBMS에서 지원합니다. 모든 ..
🚀 들어가며... 모든 언어에 있어 가장 기본이 되는 연산자 우선순위 중 SQL의 연산자 우선순위를 정리해보았습니다. 💌 표 Level 연산자 1 ~ (비트 NOT) 2 *(곱하기), /(나누기), %(계수) 3 +(양수), -(음수), +(더하기), +(연결), -(빼기), &(비트 AND), ^(비트 전용 OR), |(비트 OR) 4 =, >, =, , !< (비교 연산자) 5 NOT 6 AND 7 ALL, ANY, BETWEEN, IN, LIKE, OR, SOME 8 =(할당) 📑 내용 실행순서는 결과값에 중대한 영향을 줄 수 있기 때문에 괄호를 사용하지 않는다면 위 표의 연산자 우선순위를 항상 숙지하여야 합니다. 레벨1이 가장 우선순위로 실행되고 레벨8이 가장 우선순위가 낮습니다. 괄호를 사용한다..
- Total
- Today
- Yesterday
- Master & Slave
- Linux
- container
- django
- Algorithm
- uSWGI
- data formatting
- SQL
- django ORM
- lv1
- static files
- react
- Greedy Algorithm
- This
- 탐욕법
- generator expression
- lv2
- JavaScript
- list
- programmers
- ORM
- MVT
- Default export
- Named export
- Python
- db
- union-find
- JS
- PostgreSQL
- docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |