본문 바로가기

Programming/Python * Django5

[Django] runserver 수행시 broken pipe 이슈 해결 aws ec2 ubuntu에서 django runserver를 하던 중에 만났던 broken pipe 오류. 먼저 목적지 ip로 ping을 계속 날려봤지만 연결 안 됨! 구선생님에게도 물론 질문을 했지만, 대부분 응답시간 초과 관련된 처리라서 내 경우에는 해당이 안 되었음! 그럴리 없겠지만 혹시라도 인스턴스 문제일까 싶어 인스턴스 재부팅 해봤지만 응 아니야~! 그렇게 삽질 실패하고 시무룩 퇴근 길에... broken pipe 에러는 대체 무슨 에러일까 하고 찾아보던중 pipe = socket 이라는 사실을 알게 됨. 고로 broken pipe error = "클라이언트가 연결을 시도하려 했을 때 서버의 소켓이 닫혀있어서 연결을 할 수 없어서 뜨는 에러" 왜 소켓이 닫혀있지??? 뭔가 촉이 옴. 그리고 다.. 2021. 7. 5.
[Django] ORM 구조와 원리 그리고 최적화 전략 - Pycon2020 김성렬님 발표 정리 QuerySet을 통해 알아보는 ORM의 특징 Lazy Loading : 쿼리셋을 선언할 때는 쿼리셋 자체로만 존재한다. 실제 SQL이 실행되는 시점은, 그 쿼리셋이 사용되었을 때이다. 당장 필요하지 않으면 호출을 지연하는 특성. 꼭 필요한 시점에만 필요한 만큼 SQL이 호출된다. 재사용하지 못함으로, 불필요한 쿼리가 더 호출될 수 있다. Caching : QuerySet 캐싱을 재사용할 수 있음. 모든 user를 먼저 캐싱해두고, 필요한 특정 유저 정보를 가져올 때 앞의 변수를 활용하면 추가 쿼리를 호출하지 않는다. Eager Loading(즉시로딩, N+1 Problem) : for문이 돌때마다 쿼리를 계속 돌린다. user가 100명 있으면 for문으로 userinfo를 얻기 위해서는 총 100+1.. 2021. 6. 6.
[Python] 정규표현식(Regular Expression) 기본 문법, 파이썬 re 모듈 활용 정규표현식의 기초, 메타문자 1. 문자 클래스 [ ] [a-c] = [abc] [0-5] = [012345] [a-zA-z] = 알파벳 모든 문자 [0-9] = 모든 숫자 \d = [0-9], decimal \D = [^0-9] 숫자가 아님(^는 not의 의미) \s = whitespace 문자 (\t\n,space) \S = whitespace 문자가 아님 \w = 문자+숫자 [a-zA-Z0-9], word \W = 문자+숫자가 아닌 것[^a-zA-Z0-9] 2. Dot(.) 문자 : \n을 제외한 모든 문자 a.b : a와 b문자 사이에 \n를 제외한 모든 문자면 가능 acb : Yes a#b : Yes a1b : Yes abc : No a[.]b == a.b \ 3. 반복(*) ca*t : a가 0.. 2019. 5. 24.
[Python] 파이썬 SQLite 연동하기 SQLite는 소형 관계형 데이터베이스이다. Oracle, MysQL에 비하면 훨씬 compact 하지만, 파일이 곧 데이터베이스가 된다는 간편함 때문에 안드로이드 등의 내장형 데이터베이스로 활용되기도 한다. 이번 포스팅에서는 파이썬으로 SQLite를 연동해 테이블 관리를 해보겠다. 1) DB Browser for SQLite 다운로드 https://sqlitebrowser.org/blog/portableapp-for-3-11-2-release-now-available/ 2) 연결 객체 생성 import sqlite3 db = sqlite3.connect("test.db")# DB파일 생성 print(db) 3) 커서(쿼리문 전달 가능 객체) 생성 cursor = db.cursor() print(curs.. 2019. 5. 21.
[Python] Selenium을 활용한 웹 크롤링 셋팅 1) selenium 설치 Anaconda3 > Anaconda Prompt > conda install selenium 또는 cmd > cd C:\Users\Anaconda3\Scripts > pip install selenium 또는 에디터 내의 라이브러리 확장 프로그램을 활용해 selenium을 설치하면 된다 2) 브라우저 드라이버 다운로드 https://www.seleniumhq.org/download > 개발환경에 맞는 드라이버 다운 3) 드라이버 실행하기 from selenium import webdriver driver = webdriver.Chrome('./chrome/chromedriver') #드라이브를 저장한 폴더 위치 if driver == None: sys.exit() dri.. 2019. 5. 21.