본문 바로가기

web

(198)
centos에 python oracle 패키지 에러 libclntsh.so: cannot open shared object file: No such file or directory django.db.utils.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help 파이썬에서 오라클에 접속하기 위해선 cx_oracle 패키지를 사용하는데, cx_oracle에선 오라클의 libclntsh.so라는 파일을 사용한다. 리눅스에서는 오라클의 해당 패키지를 다운로드 한 후 패스를 설정해 주면 된다. 1. 패키지 다운로드 https://www..
Django migrate model 칼럼 추가시 null=True는 가급적 쓰지 말자 1 2 3 4 You are trying to add the field 'created' with 'auto_now_add=True' to greentariffs without a default; the database needs something to populate existing rows. 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py Colored by Color Scripter cs django 마이그레이션시 칼럼을 추가할때 종종 위와 같이 경고 메시지를 볼수 있다. 구글에서 검색해 보면 한글 블로그 대부분이 칼럼에 null=True를 추..
pytest 시 여러개의 디비 사용하기 참고로 pytest-django 에서 여러개의 디비를 사용하도록 하는 공식적인 버전은 4.3.0 부터 입니다. 해당 버전이 아닐경우 다른 결과가 나올수 있습니다. 1. 테스트 격리! 일단 나의 진행중인 프로젝트에서는 하나의 django에서 4개의 디비를 바라보고 있다. (........) 사실 한 프로젝트에서 여러개의 디비를 사용하는게 이상한 설계인데, SPOF나기 딱 좋은 지점이기 때문이고, 관리도 어렵다. 특히나 테스트시에는 디비를 않쓰는게 가장 베스트이고 (외부 연결점이 없을수록 격리성이 좋다) 테스트시에 디비를 어쩔수 써야 한다면 1번 디비를 테스트 -> 2번 디비를 테스트 -> .. 하는 식으로 단 하나의 디비만을 테스트 하는것을 추천한다. 각 디비를 초기화 및 셋팅하는데 걸리는 시간과 각각의 ..
raw query + group by 그리고 다른 디비에 접속 django 사용 중 3단 콤보로 맞아서 글로 남김 1. raw query + group by 에러 1 2 3 raw_query = "select date, sum('price') from test_table group by date" Model.objects.raw(raw_query) Colored by Color Scripter cs 실행시 만일 에러가 아래와 같다면 Raw query must include the primary key django에서는 Model.objects.raw() 실행은 ORM 요청이기 때문에 raw 쿼리 요청 시에도 primay key를 요구하는데, 문제는 group by 문구가 들어가면 select 1 id, sum('price') from test_table group ..
Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'. - django 3.2 version up 기존 django 2.*에서 3.2로 업데이트 시 실행을 하면 다음과 같은 wanning이 나옵니다. Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'. HINT: Configure the DEFAULT_AUTO_FIELD setting or the VendorsConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'. django 3.2부터는 모델의 primary key의 속성을 설정해 줘야 합니다. 기본 키의 설정은 DEF..
How Django process a request https://www.b-list.org/weblog/2006/jun/13/how-django-processes-request/ 의 글을 번역한 글입니다. 해당 글은 2006년에 쓰여진 글로 현재 django 버전과 다를 수 있습니다. 들어온다!! 핸들러가 있어 그린라이트! 이제부터 시작. 미들웨어 1 라운드 해결할 시간 미들웨어 2라운드 Into the view 템플릿 django의 템플릿 구조 응답시간(Response time) 미들웨어 처리 3 예외 아직도 응답하지 않았어? 미들웨어 처리 4: 마지막 단계 응답 1. 들어온다!! 2가지 방법으로 장고 서버를 호출한다. 아파치/모드파이선(apache/mod_python) 서버가 셋업되어있을 경우, 모드 파이선이 리퀘스트를 장고에게 전달하고 django..
JWT에서 Django request.user 까지의 여정 Django에서 request의 유저를 알기 위해선 request.user를 통해 알 수 있다. Django에서 지원하는 session 방식의 로그인 / rest_framework에서 지원하는 JWT 등 로그인을 하면 request.user의 정보를 가져올 수 있다. 이번 글은 request.user에 정보가 들어가기까지 어떤 동작을 하는지 살펴보는 글입니다. django == 2.1.2 // djangorestframework == 3.9.0 에서 진행하였습니다. 해당 버전에 따라 소스 코드가 달라질 수 있습니다. 1 번은 일반 로그인 방식이며, 2번은 JWT 방식이다. 1번 일반 로그인 방식은 먼저 cookie에 있는 세션값을 request.session에 저장하고 session 값을 통해 유저 정보..
[Django rest framework] 번외. swagger 적용하기 API 문서는 프로젝트를 수행하는 규모와 방식에 따라 각기 다른 목적으로 다양한 문서를 작성하게 됩니다. 수많은 프로젝트에서 그렇듯 이런 문서는 조금만 방심하면 유지보수되지 않는 문서가 되곤 합니다. 여러가지 이유로 유지보수되지 않는 문서로 인해 발생하는 유산(legacy)은 가끔(거의 항상) 프로젝트에 악영향을 주곤 합니다. 그중에 API 문서에 대해 공유해보려 합니다. 앞서 만든 API들을 다른 개발자분들과 함께 사용하기 위해선 문서가 필요합니다. 자동으로 문서화를 해줄 package는 drf-yasg를 사용합니다. drf-yasg 패키지 설치 $ pip3 install drf-yasg settings.py 설정 #settings.py INSTALLED_APPS = [ ...... "drf_yasg"..