###
models.py에 있는 class별 변경 사항에 대하여
"migrations" 폴더에 DB 쿼리로 파일화 시켜줌
* 참고
class Meta:
// models.py에 해당 부분을 False로 지정하면
// 실제 DB 동기화 안됨(동기화 필요 시, 해당 구문 주석)
managed = False
###
$(venv) python manage.py makemigrations [관련 프로젝트 폴더] // 파일화
$(venv) python manage.py migrate [관련 프로젝트 폴더] // 파일화 쿼리문 DB 동기화
$(venv) python manage.py showmigrations 앱이름
# 현재 연결된 데이터베이스의 스키마 목록을 ORM 구조로 뽑아준다
$(venv) python manage.py inspectdb
# 그리고 나온 스키마 중에서 필요한 스키마를 복사하여 models.py에 추가
[관련 프로젝트 폴더]/models.py 코드 추가
# 동기화 작업 시작
$(venv) python manage.py makemigrations [관련 프로젝트 폴더] // 파일화
$(venv) python manage.py migrate [관련 프로젝트 폴더] // 파일화 쿼리문 DB 동기화
from django.contrib.auth.hashers import make_password
from django.contrib.auth.hashers import check_password
# pbkdf2_sha256 password create
make_password('818283')
# pbkdf2_sha256 password check
check_password('818283', 'pbkdf2_sha256$320000$UIT~~~~~')
from django.db import transaction
@api_view(['POST'])
@transaction.atomic // 이 구문 추가 해주면 디비 구문 하나라도 오류 날 때, 롤백 해줌
def xxxxxxxxxxxx(request):
// code
try:
with transaction.atomic():
from rest_framework.decorators import api_view
@api_view(['POST']) // 'POST' or 'GET' 등.
def xxxxxxxxxxxx(request):
// code
from rest_framework.response import Response
return Response([결과값])
from django.db import connection
cursor = connection.cursor()
query = "SELECT ~~~~ WHERE ~~~ %s, %s"
cursor.execute(query, (파라메터1, 파라메터2)) // 위의 %s가 파라메터 인자 값
[settings.py]
import dotenv
dotenv.read_dotenv()
os.environ.get([변수]) // .env 파일에 있는 변수값 불러오기
DEBUG = os.environ.get("DEBUG", "False").lower() in ('true', '1', 't')
[settings.py]
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': os.environ.get("DATABASE_ENGINE"),
'NAME' : os.environ.get("DATABASE_NAME"),
'USER' : os.environ.get("DATABASE_USER"),
'PASSWORD' : os.environ.get("DATABASE_PASSWORD"),
'HOST': os.environ.get("DATABASE_HOST"),
'PORT': os.environ.get("DATABASE_PORT"),
'OPTIONS':{
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}
def dict_fetch_all(cursor):
"Return all rows from a cursor as a dict"
columns = [col[0] for col in cursor.description]
return [
dict(zip(columns, row))
for row in cursor.fetchall()
]
ex)
cursor = connection.cursor()
query = "SELECT * FROM [TABLE NAME]"
queryResult = cursor.execute(query)
dictResult = dict_fetch_all(cursor)
ex)
query = "insert into [TABLE NAME] (xxx) values ('xxx')"
insertId = cursor.lastrowid
[2022.09.20]
안녕하세요. HR맨파워 김태원 이사입니다.
잡코리아 제안 드렸는데, 답장이 없어서 찾아보다 여기에 댓글 남깁니다.
*기업 : 아웃도어 플랫폼 스타트업(요청시 오픈 드립니다)
● 포지션 : 백엔드 엔지니어
[주요직무]
서비스 서버 API 개발, 고도화 및 개선
AWS 기반의 인프라 설계 및 운영
초기 서비스 개발을 위한 새로운 기술의 제안 및 적용
전체 JD 확인을 원하시면 하단 메일 또는 전화로 요청하시면 보내드리겠습니다.
감사합니다.
이사/ 컨설턴트
김 태 원
Mobile. 010-7510-1237
E-mail. ktw@hrman.co.kr
서울 강남구 테헤란로 332 한신인터밸리24 서관 18층