본문 바로가기

개발자의 개발개발한 하루39

MySQL INNER JOIN과 LEFT OUTER JOIN 하는 방법 JOIN을 하다 보면 헷갈릴 때가 많아서 적어본다. INNER JOIN의 경우 그냥 A.ID = B.ID와 같은데, 정확하게 쓰거나 OUTER JOIN을 여러개 쓸 경우, INNER JOIN을 명시해서 쓰기도 한다. LEFT OUTER JOIN LEFT OUTER JOIN의 경우 A테이블을 기준으로 왼쪽에 JOIN조건에 따라 B테이블을 붙인다고 생각하면 된다 SELECT A.* FROM TABLE A LEFT OUTER TABLE B JOIN ON A.ID = B.ID WHERE ~~ 여기서 JOIN ON 에 즉 조인 조건에 들어갈 건 A와 B PK 조인 또는 unique한 index 조인이나 B테이블이 필요로한 조건을 적어주면 된다. WHERE절에는 A테이블에 대한 조건을 적어주면 된다. 왜냐햐면 UN.. 2023. 3. 14.
VSCode MySQL Extension 설치 및 Query 실행하는 방법 Github의 codepilot 쓰려고 VSC에서 mysql연동하려고 했는데... Codepliot이... 유료로 전환됐다는 사실을 몰랐다.. 그래도 vscode가 더 편한 것도 있는 것 같아서 vscode에서 작업을 하려고 mysql extension 설치했다. 1. vscode에서 맨 하단 조각 같은거 extension인데 클릭 후 mysql 검색 - vscode에서 보면 왼쪽 맨 하단에 퍼즐 조각 같은 모양이 있다. 그게 extension인데, 클릭 후 mysql을 검색해본다. 그러면 여러 버전이 있는데, 나는 MySql Weijan Chen이란 사람이 올린 걸 설치했다. 2. 설치 하기 - 나는 설치를 해서 Unstall로 보이는데, 설치하지 않았으면 install로 보인다. install을 눌러.. 2023. 3. 7.
linux 파일 수정 시간 초시간 상세하게 보는 방법 1. stat -c '%y' [파일이름] linux에서 파일 수정시간을 초까지 보는게 아니라 msec까지 봐야할 경우가 있다. 같은 파일이 들어왔는데, 시간이 다른 경우 초까지 보면 같은 경우가 많고 msec까지 봐야 다른 경우가 종종 있기 때문이다. 이 때 ls -al로 본다면 내림차순 정렬로 초까지 보여서 확인이 어려울 수 있다. 또 최근 파일이면 초까지 보이는데, 좀 오래된 파일의 경우 연도로 나와서 초까지 확인이 어려울 수 있다. stat -c '%y' [파일이름] 이렇게 명령어를 치면 확인이 가능하다 오래된 파일도 마지막 수정시간이 msec까지 볼 수있다. 2. date -r [파일이름]을 통한 마지막 수정시간 확인 마지막으로 수정한 시간 초를 두자리 까지 보고 싶다면 다음과 같이 하면 된다. .. 2023. 2. 21.
linux text file busy solved linux에서 실행중인 프로세스 scp로 서버에서 서버로 복사하려고 하는데 text file busy가 뜨면서 copy가 되지 않았다 stackoverflow를 참고하면 해당 프로세스가 실행중이니, kill하고 다시 copy하면 된다고 되어 있었다 What generates the "text file busy" message in Unix? What operation generates the error "text file busy"? I am unable to tell exactly. I think it is related to the fact that I'm creating a temporary python script (using tempfile) and using execl fro... stacko.. 2022. 12. 20.
크롤링 에러 requests.exceptions.SSLError: HTTPSConnectionPool 하.. 크롤링 돌려놓고 데이터 확인할려고 했는데 3시간쯤 ? 돌리고 나서 보니까 requests.exceptions.SSLError: HTTPSConnectionPool 에러났다고 멈췄다. sleep도 걸고 했는데...ㅠㅠ 새벽작업을 해야했다... 찾아보니까 크게 2가지로 나뉘는 것 같다. 1. 신뢰할 수 없는 SSL 인증서로 인해 발생 2. 너무 많이 요청해서 네트워크 뻑남 내 경우는 HTTPSConnectionPoll이라고 했으니 2번인 것 같아서, 다시 돌리니까 다시 실행이되었따... 다행이다. 이거 SSL 관련 인스톨 한 것 같은데 내 서버가 아니라서,,ㅠ 만약 1번의 문제라면 다음과 같이 처리하면 된다. import requests from bs4 import BeautifulSoup url =.. 2022. 7. 8.
셀레니움 에러 해결 ElementClickInterceptedException: Message: element click intercepted 셀레니움으로 크롤링 작업 중에 버튼 클릭하는 과정이 있는데, 클릭이 되지 않는 현상이 발생했다. 다른 버튼은 클릭이 되는데 왜..?? 클릭이 되지 않는 걸까.. 암튼 그래서 엔터키로 해결하면 되겠다 싶어서 엔터키로 해결하고자 했다. driver.find_elements_by_css_selector("[data-testid='loadingButton']")[0].send_keys(Keys.ENTER) 2022. 6. 20.
python logging으로 매일 log 만들기 (backupcount 설정 했는데 안 지워 질 때 해결법) 로그를 남기는 방법은 여러가지인데, (매일마다 처리하려고 하니, 스크립트로 만들어서 크론탭 등록, python 로그 파일 없으면 만들고 있으면 거기다 붙여넣는 식으로) python3에 있는 logging을 사용해서 해보려고 한다. logging이란? 일단 로그(log)란, 내가 한 것에 대한 ‘기록’으로 일기와 다름없다. 요즘 유행하는 vlog처럼 내가 오늘 뭘했는지 기록하는 것이다. IT에서 log란 소프트웨어 실행 중에 발생하는 이벤트 등을 기록한 것이다. 이러한 로그를 기록하는 행위는 로깅(logging)이라고 한다. 물론 vlog를 하고 싶어서 하는 사람도 있고 안하고 싶어서 안하는 사람들도 있는 것처럼 개발하면서 확인하고 싶으면 로그 남기는 것이고, 중요하지 않고 안해도 되면 안남기는 것이다. .. 2022. 3. 28.
python get_text 와 string 차이 get_text와 string의 차이를 모르겠어서 이것 저것 테스트를 했다. get_text string 현재 HTML 문서의 모든 텍스트를 한 번에 추출할 수 있다. 태그 내 문자열을 반환 현재 태그를 포함하여 모든 하위 태그를 제거하고 유니코드 텍스트만 들어있는 문자열을 반환한다. -> 항상 맨 뒤에 써야함 태그가 하나라면, 문자값을 가진다면 문자열을 반환한다. 문자열이 없으면 유니코드 형식으로 반환하므로, 출력값이 안나옴. string처럼 None도 표시 안됨 태그가 둘 이상이면 뭘 반환해야 하는지 명확하지 않아서 None을 출력한다. 하위테그까지 들고오려면 get_text 쓰는 것이 좋음 정확하게 또 명시적으로, 정석대로 원한다면 string이 좋음 둘 중 편한대로 쓰면 될 것 같다. from b.. 2022. 3. 14.
python iframe 렌더링된 페이지 크롤링 하기 아주 큰 깨달음을 얻은 날이다. 왜 계속 iframe 크롤링 하는데 왜!! 리스트가 비어서 출력될까..? 도대체 뭐가 문젤까.. 싶어서 찾아보면서 한 예시로 네이버 금융을 테스트 해보았다. F12를 누르면 개발자 도구가 나오는데, iframe을 눌러서 검색해보면 이렇게 잡혀있고 해당 부분은 src에 적힌 경로대로 다시 렌더링 되어서 페이지가 만들어지기 때문에 attrs로 title까지 얻을 수는 있겠지만 src 이후부터는 가지고 올 수가 없다. 그래서 이걸 어떻게 하면 가지고 올 수 있을까 싶어서 찾아보다가 Selenium을 쓰면 된다는 후기가 많아서 한 번 해봤다. 사실 이 페이지 크롤링 하려고 Selenium까지 쓸 필요는 없는데 워낙 무겁다보니까 근데 테스트 용으로 한 번 해보았다. 추가적으로 해당.. 2022. 2. 16.
python 3에서 바뀐 것 (출력방식, 문자열 인코딩) python2.xx -> python3.xx로 바뀌면서 바뀐게 많지만 크게 내가 보려고 정리해본다. 1. print 차이 python 2.xx에서는 print "하이하이" 이런 식으로 괄호 없이 출력했는데, python 3.xx에서는 print("하이하이") 이렇게 괄호를 붙여야만 출력되고 에러가 나지 않는다. 2. 저장 방식 python 2에서는 ASCII 방식으로 저장되었는데(UNICODE방식도 지원은 되었으나 별도 설정 필요) python 3에서는 기본 저장 방식이 UNICODE이다. 3. string python 2 에서는 default encoding은 ASCII 이다. python 3 에서는 모든 string은 unicode이고, 기본 encoding은 utf-8 이다. (그래서 문자열 앞에 .. 2022. 2. 14.
반응형