분류 전체보기
-
[SQL] UPDATE 시 LIKE 조건에 컬럼 이름 사용하기DB 2021. 7. 12. 01:26
행정구역 이름이 들어있는 컬럼의 값을 데이터 정합성을 위해 행정구역 코드로 변경해야 했다. 같은 행정구역이어도 다른 값이 들어오는 경우가 있었기 때문이다. 예를 들자면 "경기도"를 뜻하는 데이터가 "경기도"와 "경기" 두 가지로 들어오는 것이다. 이에 행정구역 테이블의 행정구역 코드 컬럼과 LIKE 조건을 통해서 UPDATE를 하였다. 이 때 구글링을 통해 찾아 사용한 SQL문은 아래와 같다. 가정 1. user라는 테이블은 city라는 컬럼을 가지고 있고, 해당 컬럼에 행정구역 이름 데이터가 들어있다. 2. city라는 테이블은 city_code와 city_name 컬럼을 가지며, 행정구역 코드와 행정구역 이름 데이터가 들어있다. 사용한 DBMS는 PostgreSQL이다. update user set ..
-
[SQL] UPDATE 시 ROW_NUMBER() 함수 사용하기DB 2021. 7. 3. 16:44
데이터가 이미 들어있는 테이블을 장고 ORM에 쓰려고 하는데 PK로 지정된 컬럼이 없다는 오류가 발생했다. 그래서 급하게 id 컬럼을 추가하고 ROW_NUMBER() 함수를 통해 id 값을 업데이트하였다. 이 때 구글링으로 찾아서 사용한 SQL문은 아래와 같다. 가정 1. a라는 테이블에 이름과 전화번호 컬럼이 존재한다. 2. 이름을 오름차순으로, 이름이 같은 경우에는 전화번호를 오름차순으로 해서 행 번호를 id 컬럼 값으로 UPDATE한다. 사용한 DBMS는 PostgreSQL이다. UPDATE a SET id = x.id FROM (SELECT name , phone_number , ROW_NUMBER() OVER (ORDER BY name, phone_number) AS id FROM a ORDER..
-
[파일 업로드와 모르고 지나친 개념들 - 1] MIME과 MIME Type과 Content-Type과 Media Type웹 2021. 6. 27. 20:07
서론 이 글은 파일 업로드에서 시작되었다. 왜 파일 업로드 요청의 Content-Type Header는 왜 "multipart/form-data"여야 할까? 늘 해왔던 작업을 하면서 문득 궁금해졌다. 그러려니 넘어갔던 지식의 공백을 메꾸기 위해 꼬리에 꼬리를 물고 찾아본 내용을 정리해보았다. 이 글이 그 첫번째이다. MIME 먼저 MIME에 대해 이야기하려 한다. MIME(마임)은 "MIME Type"이란 용어를 통해 접하게 되었는데, MIME이 뭔지 알게 되고 나서야 MIME Type과 다른 Type들을 이해할 수 있게 되었다. MIME은 "Multipurpose Internet Mail Extensions"의 약자이다. 그래서 그게 뭐냐? "첨부 파일과 ASCII가 아닌 문자 인코딩으로 작성된 텍스트..
-
[Django] Celery 작업 실패 시 콜백 함수 설정하기파이썬/장고 2021. 6. 20. 16:43
Celery는 분산 메시지 전달에 기반을 둔 오픈 소스 비동기 task queue이다. 진행 중인 프로젝트에서 데이터 수집 작업을 비동기로 처리하기 위해 장고와 연동해서 Celery를 사용하였는데, Celery가 수행하는 모든 작업은 별도의 작업 기록 테이블에서 관리되도록 하였다. 그런데 이를 위해서 작업 실패 시의 상태값 업데이트가 필요했다. 처음에는 일정 시간마다 result backend를 조회하는 스케줄러를 통해서 상태값을 업데이트해볼까 생각했지만, 배보다 배꼽이 커지는 격이어서 다른 방법을 찾게 되었다. 그러던 중 Celery에서 on_failure()라는 콜백 함수를 지원하는 걸 발견했다. 사용 방법은 다음과 같다. 1. celery.Task 클래스 상속 후 on_failure() 함수 오버라..
-
[파이썬] 숫자인지 여부 판별하기파이썬 2021. 6. 13. 21:09
파이썬 기반의 프로젝트를 진행하는 중, 여러 출처에서 데이터를 수집하여 공통 테이블에 적재하는 기능을 구현해야 했다. DBMS는 PostgreSQL을 사용하였는데 number 타입 컬럼에 들어갈 데이터가 문자열이라 하더라도, 정수 또는 실수의 숫자 형태라면 타입 캐스팅을 해서 테이블에 적재되도록 하는 요구사항이 있었다. 따라서 해당 작업을 수행할 수 있는 검증 함수를 구현했다. 먼저 아래와 같은 틀로 함수를 정의한다. def is_number(value): is_number_flag = True #검증 로직 return is_number_flag 숫자로의 타입 캐스팅은 float() 함수를 이용하였다. 파이썬 REPL에서 아래처럼 간단히 테스트 해볼 수 있다. python a = '143.56' prin..
-
Anaconda 명령어파이썬 2021. 6. 6. 17:55
아나콘다를 이용할 때 필요한 기본적인 명령어를 정리하였다. 가상환경 목록 조회 conda env list 가상환경 생성 conda create -n(--name) ["생성할 가상환경 이름"] python=["사용할 파이썬 버전"] #ex conda create -n test python=3.6.5 가상환경 삭제 conda env remove -n(--name) ["삭제할 가상환경 이름"] #ex conda env remove -n test 가상환경 활성화 conda activate ["활성화할 가상환경 이름"] #ex conda activate test 가상환경 비활성화 conda deactivate ["비활성화할 가상환경 이름"] #ex conda deactivate test 패키지 목록 조회 #현재 ..