본문 바로가기

Django RuntimeWarning: DateTimeField ... received a naive datetime #python 글 제목처럼 Django에서 RuntimeWarning: DateTimeField ... received a naive datetime가 발생하면 settings.py의 USE_TZ 값을 확인해보시면 됩니다. 아마도 True로 설정되어 있을 것 같은데요. 아래와 같이 False로 변경해주시면 warning이 사라집니다. USE_TZ = False 아래와 같은 DateTimeField에 값을 입력하거나 업데이트 할 때 발생할 수 있습니다. dttm = models.DateTimeField(auto_now_add=True, null=False) 국내에서만 서비스 한다고 하면 USE_TZ False로 써도 될 것 같고요. 해외 사용자도 고려되야 한다면 USE_TZ = True, DateTimeField도 tz.. 더보기
Python File Read : UnicodeDecodeError: 'utf-8' codec can't decode byte ... 파이썬에서 파일을 읽어서 출력해보면 깨지거나, UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 0: invalid start byte 같은 에러가 발생할 때가 있죠. 파일이 utf-8로 안되어 있는 경우에는 아래와 같이 file을 open할 때 encoding 값을 같이 전달해주면 해결 가능합니다. with open('../file/path...', 'r', encoding='utf-8') as f: 여기서 encoding 값을 utf-8로 변경해도 한글 안나오는 경우에는 해당 파일이 euc-kr로 인코딩 되어 있을 수 있습니다. 주로 행정기관에서 생성하는 문서들이나 파일들이 euc-kr로 되어 있는 경우가 있죠. 그럴 때는 eu.. 더보기
파이썬 크롤링 005 - 쇼핑몰 상품정보 (with selenium) / 데이터수집 자동화 앞선 포스팅에서 파이썬 코드를 통한 크롤링 기본적인 내용을 한 번 정리해봤습니다. 너무너무너무 단순했죠? 이번에는 조금 다른 방법으로 크롤링을 해보려고 합니다. 바로 Selenium 라이브러리를 통해서 크롤링 하는 것인데요. 아래서 조금 더 자세하게 설명해드리겠습니다. 크롤링에 대한 기본적인 내용을 보시려면 아래 링크로 걸어드리는 4개 포스팅을 보시면 조금 감을 잡을 수 있지 않을까? 라고 생각합니다. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 2020/05/03 - 파이썬 크롤링 003 - 파서 구현 2020/05/05 - 파이썬 크롤링 004 - 파싱 결과 저장 기존에 파이썬 requests 라이브러리를 활용해서 간.. 더보기
파이썬 크롤링 004 - 파싱 결과 저장 / 데이터수집 자동화 정말 기본적인 크롤링 구현을 보여드리고 있습니다. 앞선 포스팅 3개에서 이어지는 포스팅이고요. 파이썬을 활용한 크롤링에 대해서 궁금하신 분들은 001부터 봐주시면 더 이해가 쉽습니다. 아래 링크로 달아둘게요. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 2020/05/03 - 파이썬 크롤링 003 - 파서 구현 003에서 작성한 코드를 일부 수정했습니다. 일단 전체는 이렇게 생겼고요. 추가된 부분만 설명해볼게요. import requests from bs4 import BeautifulSoup crawling_target_urls = [ 'https://finance.naver.com/item/main.nhn?code=0.. 더보기
파이썬 크롤링 003 - 파서 구현 / 데이터수집 자동화 벌써 3번째 글이네요. 앞에 001, 002 글에서 이어지는 글이라서 관심있는 분들은 한 번 읽고 이번 글을 읽으시면 더 이해가 쉬울 것 같습니다. 아래 링크로 달아둘게요. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 이번 포스팅은 제목에도 나와있지만 파서를 구현하는 내용입니다. 정확하게는 멋진 라이브러리를 사용해서 크롤링한 데이터에서 원하는 내용만 뽑아내보는 것이죠. 002 포스팅 예제에서 주식 정보가 나와있는 사이트를 예로 들었는데 이번 포스팅에서도 이어서 사용해봅니다. 위 그림에서 오른쪽에 박스 그려둔 곳 보이시나요? 저곳에 있는 정보를 파싱하는 대상으로 설정해보죠. 그렇다면 아래와 같은 코드로 가능합니다. 코드를 .. 더보기
파이썬 크롤링 002 - 크롤러 구현 / 데이터수집 자동화 이전 포스팅에서 파이썬 크롤링 001 - 구성요소, 구현방법에 대해서 이야기 했습니다. 이어지는 포스팅이니까 혹시 1번을 안보신 분들은 보고 오시면 더 쉽게 이해되지 않을까 싶습니다. 이번 포스팅에서는 크롤러를 구현해봅니다. 이게 크롤러가 끝이야? 장난해? 라고 하실 수 있겠습니다. 저는 비개발자 분들이 부르는 크롤링은 사실 크롤링과 파싱을 합친 개념이라고 보거든요. 그래서 원하시는 결과를 얻으려면 파싱까지도 하셔야 하는데 이번 포스팅에서는 크롤링만 해보도록 하겠습니다. 어떤 예제가 좋을까? 고민을 했는데 주식쪽으로 예제를 만들어봤습니다. 주식을 투자하시다보면 회사들의 정보를 찾아보는 경우가 많죠. 간단하게는 요약정보부터 조금 더 자세하게는 재무제표까지 들여다 보는 것은 기본이라고 하죠. 이런 가정을 해.. 더보기
파이썬 크롤링 001 - 구성요소, 구현방법 / 데이터수집 자동화 안녕하세요 ! 오랜만에 정말 오랜만에 잡다한 기술 내용으로 포스팅을 하네요. 이번에 조금 길게 정리해보고 싶은 주제는 크롤링입니다. 크롤링이 꼭 개발자의 영역은 아닌것 같습니다. 누구나 개발할 수 있는 영역이라 생각하고 복잡한 내용은 조금 공부하면 충분히 할 수 있는 부분이라고 생각됩니다. 첫 번째 포스팅은 구현 방법을 정리하는 정도로 마치고 두번째, 세번째 이어가면서 실제로 어떻게 크롤링 프로그램을 구현하는지 더 할 수 있으면 수집한 데이터를 데이터베이스에 저장하고 관리하는 내용까지 정리해보려고 합니다. 이 포스팅을 보고 계시다면 당연히 검색으로 들어오셨을 확률이 매우 높죠. 검색어에는 '크롤링 (crawling)' 이 포함되었을 확률도 매우 높다고 생각됩니다. 따라서 크롤링이 뭐야? 는 넘어가도 되겠.. 더보기
python timestamp to datetime 파이썬에서 timestamp를 datetime으로 변경하는 방법입니다. 일단 dateutil이라는 라이브러리를 사용하는 것이 편리해서 dateutil을 설치합니다. pip install python-dateutil 로 설치하실 수 있습니다. dateutil 문서: https://dateutil.readthedocs.io/en/stable/ dateutil - powerful extensions to datetime — dateutil 2.8.1 documentation Quick example Here’s a snapshot, just to give an idea about the power of the package. For more examples, look at the documentation. S.. 더보기
python deep copy 파이썬 딥카피 하는 방법은 아래와 같이 간단합니다. import copy new_list = copy.deepcopy(old_list) deepcopy 테스트를 위해서 아래 코드를 보시죠. import copy old_list = [1,2,3,4] print "old_list: {0}, old_list_hex: {1}".format(old_list, hex(id(old_list))) new_list = old_list print "new_list: {0}, new_list_hex: {1}".format(new_list, hex(id(new_list))) new_list[0] = 100000 print "new_list: {0}, new_list_hex: {1}".format(new_list, hex(id.. 더보기
Fabric Error with cryptography version Fabric 실행했을 때 잘 모르겠는 에러가 나면서 cryptography 어쩌고 하면 버전을 체크해보시면 좋겠습니다. 저같은 경우에는 cryptography 버전이 2.4.2 가 아니면 에러가 나더라고요. 그래서 아래와 같은 명령어로 cryptography 를 다시 설치했습니다. pip install cryptography==2.4.2 pip 설치할 때 패키지명 뒤에 == 를 붙이고 버전을 써주면 해당 버전을 설치해줍니다. cryptography 버전을 체크하는 방법은 pip freeze를 사용하시면 되는데 pip freeze | grep cryptography 하시면 cryptography 버전만 확인이 가능하죠. 아무튼 Fabric 에러나는데 잘 모르겠다. 하시면 cryptography 버전 확인해.. 더보기
Fabric 에서 password 입력하지 않는 방법 저는 Fabric으로 배포하는 경우가 있는데요. ssh를 통한 방법이다 보니까 아이디, 패스워드를 물어보는 경우가 있습니다. 가장 쉬운 방법은 ssh key를 복사해두는 것이죠. from fabric.context_managers import cd, env def set_awsapi(): env.hosts = ['server1', 'server2', 'server3'] env.user = 'ubuntu' env.key_filename = ['~/key~~~name~~~.pem] 그런데 어떤 이유(정책?) 때문에 키복사는 허용되지 않을 때 아이디 / 패스워드로 입력해서 들어가야 하는데 매번 타이핑 하기가 너무 귀찮을 때가 있죠. 아래와 같은 방법으로 password를 더 이상 치지 않아도 됩니다. from.. 더보기
Django Allauth Login Page Custom Django에서 사용자 관리로 allauth 많이 사용하죠. 저도 사용하고 있는데 기본적으로 제공하는 페이지는 이쁘지 않죠 ! 그래서 custom을 해야 하는데 간단하게 정리해봅니다. 1. login.html을 만들어주시면 됩니다. 위치는 templates/account/login.html 입니다. accoutn/login.html을 정확하게 지키지 않으면 기본 페이지가 나옵니다. 2. 맘대로 변경하시면됩니다. 저는 bootstrap도 사용해서 login.html에 bootstrap cdn으로 적용하고 아래를 꾸미면 되겠습니다. 하지만 form.as_p 부분은 걍 불러온 것이기 때문에 이것은 따로 조정해야 합니다. 3. settings.py에 아래 설정을 추가합니다. ACCOUNT_FORMS = {'lo.. 더보기
Django User Profile 적용하기 with allauth models.py에 UserProfile 모델을 하나 생성합니다. 저는 TestUserProfile을 하나 만들었고 user, gender, address를 가지고 있습니다. user는 User모델과 1:1 매칭됩니다. gender와 address는 그냥 charField입니다. 제대로 하기 위해서는 알맞은 타입을 가져야 하겠죠 ? 다음은 forms.py 에다가 SignupForm을 생성해줍니다. gender, address 에 해당하는 form 필드를 만들어 줍니다. widget을 설정할 수 있습니다. attrs에 class를 추가할 수 있고요. signup 함수를 만들고 profile, user를 저장하는 코드를 작성해줍니다. python manage.py makemigrations python ma.. 더보기
파이썬 - 모든 엘리먼트의 True 체크 (list, tuple, etc) Python all(), any() * Python Standard Library > Built-in Functions > all() https://docs.python.org/3/library/functions.html#all 내장함수 all은 모든 엘리먼트가 True인지 체크해서 모두가 True이면 True를 리턴하고 하나라도 False가 있으면 False를 리턴해주는 함수입니다. 엘리먼트가 없으면 (비어있으면) True를 돌려주네요. all은 인자로 iterable를 받는데 iterable의 설명은 아래 링크를 참고하세요. 간단하게 말해서 반복 가능한 객체를 의미합니다. 예를 들어서 list나 tuple 같은 것들을 말합니다. https://docs.python.org/3/glossary.html#.. 더보기
python abs (파이썬 절대값) PYTHON 절대값 (Absolute Value) * Python Standard Library > Built-in Functions > abs() https://docs.python.org/3/library/functions.html#abs 파이썬에서 절대값을 얻기 위해서 abs() 함수를 사용합니다. 사용 테스트를 간단한 예제로 확인해보세요. abs 함수는 정수와 실수를 입력하면 그대로 정수의 절대값, 실수의 절대값으로 돌려줍니다. number1, 2, 4, 5를 보시면 알 수 있습니다. 다만 복소수를 입력하면 값의 크기로 돌려줍니다. number 3, 6을 보시면 알 수 있습니다. 더보기
PEP 8 소개 및 적용 PEP 8 - Style Guide for Python Code 간단히 소개하고 적용하는 방법 정리해봅니다. 많은 사람들과 같이 코드를 개발하려면 어떤 기준에 의해서 코드를 작성하는 것이 좋겠죠. 가독성 측면에서 뛰어나니까 다른 사람의 코드를 보고 이해하는 것이 편리하니까요. 그래서 PEP 8이 존재하는 것입니다. 많은 블로그에서 PEP 8 간단 정리한 버전들이 있더라고요. 그것들을 참고하신는 것도 좋고 PEP 8 문서를 읽어보시는 것도 좋을 것 같습니다. 엄청 길지는 않아요. PEP 8 - https://www.python.org/dev/peps/pep-0008/ 저는 ATOM 에디터를 사용하기에 PEP 8 적용을 좀 더 쉽게 할 수 없을까? 찾아봤습니다. python-autopep8 설치하시면 pac.. 더보기