디지털 노마드/ 자연인/ IT개발

django 7

[django] update를 Raw SQL Query하는 방법

2 일 지난 포스트에 대하여 active = 0를 해주는 쿼리를 HeidiSQL에서 테스트 하고, 이를 장고에서 직접 실행하는 코드입니다. from django.db import connection with connection.cursor() as cursor: query = "UPDATE posts SET active = 0 WHERE date >>>>>>>>> 2일 지난 포스트 remove 완료: {}'.format(row)) 실행 후에 결과값을 받아와서 확인할 수 있습니다. 2021.07.22 - [개발자] - [django] 중복 제거,..

개발자 2021.07.23

[django] 중복 제거, group by, raw SQL query로 하는 방법

중복을 제거 하기 위해 distinct, group by를 사용하는데요, 장고에서 group by 사용하는 방법을 알아 보겠습니다. 개인적으로 쿼리를 사용하는 것이 익숙해서 HeidiSQL에서 쿼리 테스트를 하고 raw SQL 쿼리를 코드에 직접입력하는 방식을 사용합니다. from django.db import connection cursor = connection.cursor() query = "SELECT id FROM posts GROUP BY subject HAVING COUNT(subject)>1" cursor.execute(query) ids_list = [item[0] for item in cursor.fetchall()] queryset = Posts.objects.filter(id__in..

개발자 2021.07.22

[django] File "manage.py", line 17 ) from exc ^ 에러

장고로 개발하다보면 무지하게 자주보는 에러입니다. root:/root/home/mysite# python manage.py makemigrations File "manage.py", line 17 ) from exc ^ SyntaxError: invalid syntax 파이썬이 버전2와 버전3으로 따로 있는 것을 아실겁니다. 이때는 명시적으로 python을 python3로 바꿔주시면 됩니다. python3 manage.py makemigrations 이렇게 하시면 실행됩니다. 알면서 자주보는 에러입니다.

개발자 2021.07.15

[django] ImportError: attempted relative import beyond top-level package 에러 해결 파이썬

장고는 앱 기반으로 프로그램 개발이 이뤄집니다. 그래서 A라은 앱에서 개발하다가 B라는 앱의 함수를 사용하고 싶을 때가 있습니다. 그래서 자연스럽게 상대주소로 import를 했더니 (점이 세개!!) 에러가 뜹니다. ImportError: attempted relative import beyond top-level package 상대주소는 런타임시에 워킹디렉토리(디버깅 설정)에 따라서 다를수 있습니다. 그래서 패키지 이름을 넣어서 선언하면 된다고 합니다. 이렇게 쉬운 것을... 몰랐습니다. 다만, 패키지가 되려면 setting.py에서 INSTALLED_APPS에서 추가해줘야 합니다. 도움이 되셨길 바랍니다.

개발자 2021.07.06

[django] django.db.utils.OperationalError: (1366, "Incorrect string... AWS에서 해결하기

테스트 서버에서 에러가 뜨더니 본섭(AWS)에서도 똑같이 에러가 났습니다. DB 의존적인 문제, 이모지가 문제였습니다. AWS > RDS > 파라메터그룹 수정으로 가서 'char'와 'coll'에 각각 utf8mb4 과 utf8mb4_unicode_ci 를 넣어 주었습니다. 참고 했던 링크 https://medium.com/oldbeedev/mysql-utf8mb4-character-set-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-da7624958624 그런데 안됩니다!!! 여기저기 더 찾아보니 장고 셋팅에서 charset을 설정해주라고 합니다. DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.mysql', .... 'OPT..

개발자 2021.07.02

[django] django.db.utils.OperationalError: (1366, "Incorrect string value: 에러 해결하기

django에서 신규생성한 테이블에 크롤링한 데이터를 입력하려 하자 에러가 났다 django.db.utils.OperationalError: (1366, "Incorrect string value: 인터넷으로 찾아보니 데이터베이스가 4바이트 문자열을 지원하지 않아서 그렇다는 말도 있어, 해당 테이블 과 컬럼의 캐릭터셋을 UTF8 4바이트 지원하도록 alter해주는 것 ALTER TABLE CHANGE TEXT CHARACTER SET utf8mb4 COLLATE UTF8MB4_UNICODE_CI; ALTER TABLE CONVERT TO CHARACTER SET utf8mb4 COLLATE UTF8MB4_UNICODE_CI; 요즘 이모지(윈도우 + '.' 입력)라고 젊은 친구들이 많이 쓴다는데, 희한하게..

개발자 2021.07.02