본문 바로가기

Code/Python & Django6

[Django] Django의 ORM : get() 과 filter() 비교 Django ORM을 작성하면서 SQL문을 확인하곤 한다. 오류를 발견하면서 헷갈리는 get() 과 filter()을 간단히 정리한다. fetchone # ORM User.objects.get(id=1) #Return : Object # SQL SELECT * FROM accounts_user WHERE id=1; get()은 쿼리에 맞는 객체 하나( [0]번째 )만 반환해준다. filter().first()와 같다. 쿼리에 맞는 결과가 없을 시 DoesNotExist 에러가 발생한다. 그런데 get()은 객체를 반환한다는 것에 주의한다. 예를 들어보겠다. python manage.py shell 명령어를 입력하거나 PyCharm을 쓴다면 python console로 간다. 작성한 app의 models... 2020. 6. 17.
[AWS] RDS DB 인스턴스 연결 오류 : ERROR 2003 (HY000): Can't connect to MySQL server on 오류 ubuntu 서버에서 MySQL에 접속하려니 오류가 났다. 오류 이유 대부분 이유 중 하나가 DB 인스턴스 생성시 자동으로 생성된 보안 그룹에 있는 DB 인스턴스에 접근하기 위한 권한을 부여한 수신 IP주소의 동기화 문제라고 한다. 기본적으로 DB 인스턴스는 접근을 허용하지 않는다. 즉, 보안 그룹 규칙에 문제가 있을 가능성이 높다. 출처 오류 해결 1. AWS의 VPC 콘솔을 열어 보안그룹을 클릭한다. https://ap-northeast-2.console.aws.amazon.com/vpc/home?region=ap-northeast-2 2. 해당 DB 인스턴스의 보안그룹을 찾아 클릭한다. 3. 하단의 인바운드 규칙 편집을 클릭한다. 4. 소스를 무관으로 변경한다. 5. 다시 터미널로 돌아가서 접.. 2020. 5. 31.
[Django] MySQL 과 Django 연동하기 장고에서 기본적으로 세팅된 DB는 sqlite3다. sqlite3는 사용하기 쉽고 간편하지만, 실제 서비스에 사용하기엔 너무 가볍고 구현할 수 있는 기능에 제약이 많다. 따라서 가장 범용적으로 쓰이는 오픈소스 RDBMS인 mysql을 사용한다. MySQL 설치하기 먼저 mysql이 깔려 있지 않다면 설치해준다. (링크) mariaDB와 mysql은 호환성이 높으므로 (거의 완벽) mariaDB가 깔려있으면 따로 깔지 않아도 된다. (참고) 설치가 어렵다면 링크를 참고해보자. (설치안내) 설치 후 제대로 설치 됐는지 여부는 Terminal에서 mysql -u root -p 명령어 입력 후 접속이 잘 되는지를 통해 알 수 있다. MySQL 세팅 및 Django와 연동하기 1. 프로젝트 가상환경에서 mysql.. 2020. 5. 31.
AWS를 통한 Django 서비스 배포 - 1) EC2, RDS _전반부 Django 백엔드를 사용한 서비스를 AWS를 사용해서 배포하고자 한다.먼저 1단계로, AWS의 EC2, RDS 인스턴스를 통해 개발 서버를 배포한다. 1단계) AWS의 EC2, RDSEC2 인스턴스와 RDS 인스턴스는 아마존의 VPC(Virtual Private Cloud) 서비스 내에서 가상의 컴퓨터를 임대 받는 것이다. AWS의 EC2 인스턴스란?AWS(아마존 웹서비스)의 EC2는 Elastic Compute Cloud(Amazon EC2) 의 약자다.컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스인데, 쉽게 생각하면 사용자가 가상의 컴퓨터를 임대받는 것이다.사용자는 원하는 OS를 선택하고 웹서비스에 필요한 프로그램을 설치하면 된다.Amazon EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및.. 2020. 5. 29.
Django 데이터베이스 시간대 변경 모델을 정의하는 Field에서 auto_now 또는 auto_now_add 인자를 사용한다. DB에서 해당 필드 값을 확인해보면 삽입된 데이터가 한국 시간과 맞지 않는 것을 확인할 수 있다. 이는 settings.py에서 아래의 두 가지 사항을 모두 적용해주면 데이터베이스의 시간대를 한국 시간으로 바꿀 수 있다. TIME_ZONE = 'Asia/Seoul' USE_TZ = False USE_TZ=True라고 설정하면 장고가 알아서 시간대를 UTC(협정 세계시 시간)으로 조정한다. 즉, 화면에서 입력 받는 폼과 템플릿 처리 시에만 TIME_ZONE 항목에 설정한 시간대를 반영하고, DB에는 UTC로 데이터 입력 시간을 반영한다. 따라서 DB에도 설정해준 TIME_ZONE을 적용하고 싶다면 USE_TZ를 F.. 2020. 5. 19.