프로그래밍/Python 83

[python] 클래스 타입 비교 (type, isinstance)

type() 내장 함수 파이썬에서 객체에 대한 클래스 형을 확인하기 위해서 type() 내장 함수를 이용합니다. import types class Rectangle(object): def __init__(self, width, height): self.width = width self.height = height r = Rectangle(3, 4) print(type(r)) """ """ type() 함수를 이용하면 다음과 같은 형식으로도 객체의 형을 확인할 수도 있지만, 좋은 방법은 아닙니다. if ( type(r) == type(Rectanble(0, 0)) ): # 추가적이 객체를 생성함 print('r is "Rectangle" instance.') """ r is "Rectangle" insta..

[python] PIP로 설치한 패키지 내부 디버깅하기 (in VSCode)

열심히 파이썬 개발을 진행하던 중에 설치된 패키지 내부에서 오류가 발생하는데, 왜 그런 오류가 발생하는지 도저히 알 수가 없었던 경우가 있었습니다. 내부 소스까지 타고 디버깅을 하면 금방 원인을 찾을 수 있을 것 같았는데, 방법을 몰라서 이리저리 찾아 보았는데, 엄청 간단한 해결책이 있었습니다. launch.json 파일에 다음과 같은 한 줄을 추가하면 PIP로 설치한 패키지 내부도 디버깅이 가능합니다. "justMyCode": false 아래는 위 옵션을 켜고 디버깅을 하다가 PIP 내부에서 오류가 발생한 상황입니다. 참고 자료 https://stackoverflow.com/questions/60995830/ ; Debug Python code thats in a PIP package in VS Code

[python] socketio Clinet : One or more namespaces failed to connect error

문제점 및 증상 python flask-socketio 패키지를 이용하여 SocketIO를 구현한 서버에 대하여, 브라우저의 자바스크립트 라이브러리에서는 정상적으로 잘 접속되어, 이벤트를 주고 받는데 아무런 문제가 없었습니다. # reference : https://flask-socketio.readthedocs.io/en/latest/getting_started.html # https://stackoverflow.com/questions/31647081/ # https://heodolf.tistory.com/125 from flask import Flask, render_template from flask_socketio import SocketIO, emit from socketio import Cl..

flask RESTful API의 CORS 설정

개요 파이선 Flask를 이용하여 간단하게 RESTful API 만들어서 유용하게 이용하고 있었습니다. 외부에서 작성된 RESTful API를 이용하려고 하니, CORS(Cross Origin Resource Sharing) 문제가 발생하여 이를 해결하는 과정을 정리해 둡니다. CORS (Cross Origin Resource Sharing) 란? 우리말로 번역하면 "교차 출처 리소스 공유"로 브라우저 등에서 서버가 다른 출처의 리소스(API 등)를 요청을 허용할 수 있도록 하는 웹 서버의 정책이라고 볼 수 있습니다. 외부 다른 도메인 등에서의 요청을 허용하지 않으면, CORS 정책 위반으로 요청에 대한 처리가 실패하게 됩니다. 관련된 요청 헤더는 다음과 같습니다. Origin Access-Control..

[python] 크롬 브라우저 실행 방법

크롬 브라우저를 실행하여, 특정 URL 주소를 표시하고 싶은 경우가 종종 있습니다. 별도의 패키지 설치 없이 가장 손쉬운 방법은 os.system() 함수를 이용하는 방법입니다. 그 밖에 webbrowser 패키지를 이용하는 방법이 있으나, 별도의 패키지를 설치해야하는 점이 단점입니다. 아래는 os.system() 함수를 이용하여 특정 URL 주소를 표시하는 예제입니다. import os # os.system('chrome http://hbesthee.tistory.com') # 오류 발생 : 'chrome'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. # Chrome 실행 파일이 PATH에 등록되어 있지 않았음 # os.system('"%ProgramFiles%..

[Python] email-"The sender address is not a valid RFC-5322 address" 오류 대처

문제점 및 증상 아래와 같이 이메일 발송 예제를 이용하여 메일을 발송하였을 때, 대 부분은 문제 없이 잘 수신이 되었으나, 네이버에서는 수신이 되지 않았습니다. import smtplib from email.mime.text import MIMEText smtp = smtplib.SMTP('mail.mail-server.kr', 25) smtp.ehlo() # say Hello #smtp.starttls() # TLS 사용시 필요 smtp.login('sender@mail-server.kr', 'qrCheckIn2@2!') msg = MIMEText('본문 테스트 메시지') msg['To'] = 'hbesthee@naver.com' msg['Subject'] = '메일 발송 시험 (2021.08.05)'..

[python] JSON 검증 (validation)

jsonschema를 이용하면 JSON 데이터가 원하는 형식 (schema)에 맞는지 확인하여 처리할 수 있습니다. jsonschema를 이용하여 JSON 데이터를 확인하는 기본적인 방법은 아래와 같습니다. from jsonschema import validate # A sample schema, like what we'd get from json.load() schema = { "type" : "object", "properties" : { "price" : {"type" : "number"}, "name" : {"type" : "string"}, }, } # If no exception is raised by validate(), the instance is valid. validate(instanc..

[Git] 특정 커밋(commit)로 이동하기 - checkout

git 커밋(commit) 이력 확인 이동할 특정 커밋을 확인하기 위하여 커밋 이력을 확인해야할 때, "log" 명령을 이용합니다. $ git log commit 7a0ad29e32bf05c56fa5039249d7a40d7f0a6d63 (HEAD -> master, origin/master, origin/HEAD) Author: Wonhee Han Date: Sat Mar 2 17:40:21 2021 +0900 ADD: about NaN commit 66ca530eff53437da4cda20a8c0f764cfe5c8b3f Author: Wonhee Han Date: Mon Nov 27 22:50:43 2020 +0900 수정: 서버에서 API 호출하는 방식으로 복구 commit b4c3d555521692..

쿼리 결과를 dict, json 형태로 한번에 바꾸는 방법

RESTful API로 데이터베이스에 특정 조건으로 데이터를 조회한 결과를 JSON 형태로 반환하는 API를 작성하면서, JSON 결과를 만드는 부분을 다음과 같이 일일이 dict 형태로 만들어 주다 보니, 새로운 쿼리를 작성할 때마다 dict 형태로 만들어주는 것 자체도 어려운 것은 아니지만, 의외로 손이 많이 가는 작업이었습니다. 작업중 실수로 오타라도 생기면, 그걸 찾기도 쉽지 않아서 간단하게 데이터베이스 테이블의 컬럼명과 동일한 형태로 결과를 한번에 만들어 주는 것은 없는지 찾아보게 되었습니다. query = f""" SELECT M.member_no, M.member_id, '*' AS password, M.member_name, M.phone_no , M.email, M.tel_no, M.re..

728x90