전체 글

    [python pandas] 그룹별 집계 - value_counts()

    print(ResFrame["TypeName"].value_counts()) 결과 type count 20484 5950 20483 2825 28674 2775 28672 2774 28673 2773 37 1465 25 168 1 148 16385 23 21 16 8193 14 20481 9 20482 3 5 3 20480 3 7 1 20485 1 Name: TypeName, dtype: int64 인덱스, 값 각기 따로 추출 print(RequestStastics.index) print(RequestStastics.index.to_list()) print(RequestStastics.values.tolist()) ['2021-11-26', '2021-11-17', '2021-11-15'] [3, 1, 1]

    [python] PostgreSQL→ pandas → json

    목적 python 에서 pandas로 PostgreSQL데이터를 읽어와 json 형식으로 사용하기 위함. db = psycopg2.connect( ~~~~~ ) 일단 PostgreSQL 접속부터 진행해서 객체 생성하고 def selectPD(): sql = "SELECT * FROM WT LIMIT 100" result = pd.read_sql(sql,db) print(result) 판다스의 read_sql 함수로 sql 쿼리와 db 객체를 같이 넘겨주면 pandas로 데이터 불러오는건 끝. 이제 데이터프레임을 JSON으로 변환해주면 되는데, datetime이나 Timestamp 자료형 데이터가 있는경우 변환시 TypeError: Object of type Timestamp is not JSON seri..

    [python] manage.py로 실행할 때 flask 앱이 두번씩 실행되는 경우

    app.run 이나 socketio.run 을 사용하는 경우 use_reloader=False 인자를 추가 해주자. socketio.run(app,port=80,host='0.0.0.0',debug=True,use_reloader=False)

    [python] 클래스를 JSON 문자열 형태로 변환

    def toJSON(self): return json.dumps(self,default=lambda o:o.__dict__,sort_keys=True,indent=4) 메소드를 하나 만들어주자.

    [python] 날짜 문자열을 int형 초로 변환 + 제이쿼리에서 타임스탬프 사용

    int(time.mktime(datetime.strptime(s.assigndate, "%Y-%m-%d %H:%M").timetuple())) "2021-10-27 16:10" 과 같이 연-월-일 시:초 형태로 전달되는 문자열을 strptime 함수를 통해 datetime 객체로 변환한 후 timestuple() 함수를 써서 초 형태로 만들고 time.mktime 함수를 써서 timestamp 형태로 변환한 다음 int 함수를 통해 숫자 데이터로 바꿀 수 있다. 이렇게 나온 타임스탬프 데이터를 제이쿼리를 통해 변환하여 쓰고싶을땐 var odate = new Date(date*1000) 넘어온 타임스탬프 값에 1000 (밀리초) 을 곱해서 사용하면 된다.

    [python] jira-python API에서 labels 형태 필드 사용법

    레이블 필드에서 레이블의 추가와 삭제는 문자열을 기반으로 이뤄진다. iss.update(labels= [ {'add': "test"} ] ) iss.update(labels= [ {'remove': "test"} ] ) 또한 필드에 커스텀 필드로 레이블을 추가할 수 있는데, 이때 속성이 정해진 레이블 필드를 사용하는경우는 아래와 같이 사용할 수 있다. iss.update(customfield_10059=[ {'add': {'id':'10035'} } ] ) iss.update(customfield_10059=[ {'remove': {'id':'10035'} } ] ) label 형태를 사용하는 커스텀 필드에서 레이블의 추가와 삭제는 id 코드를 이용해 이뤄진다.

    [python] python S3 API

    pip install boto3 S3 API 사용을 위한 모듈 설치 파일 업로드 두가지 방법이 있다 . boto3.resource() 사용 import boto3 from botocore.client import Config S3_KEY = '시크릿 키 ID' S3_SECRET = '시크릿 키' BNAME = '버킷(폴더)이름' def s3upload(): data = open('test.txt','rb') #S3 연결하고 객체 생성 s3 = boto3.resource('s3',aws_access_key_id=S3_KEY, aws_secret_access_key=S3_SECRET,config=Config(signature_version='s3v4')) #생성 객체에 파일 업로드 실행 return s3.B..

    [flask] flask + jira API

    2종류가 있다. JIRA python library : https://github.com/pycontribs/jira atlassian-python-api : https://github.com/atlassian-api/atlassian-python-api 1번은 JIRA 만을 사용하기 위해 만들어진 라이브러리고, 2번은 atlassian 자체를 사용하면서 그 중에 JIRA API를 쓸 수 있다. 두 라이브러리 간 사용법 자체는 크게 차이가 없어보임. jira만 쓸꺼니까 일단 1번으로 해본다. JIRA 서버 연결 JIRA 서버를 새로 만들어서 연결하는게 아닌, 기존 서버에 연결해서 사용하는게 목적이다. from jira import JIRA jac = JIRA('',auth=('username','pass..

    [flask-python] Flask 서버 웹소켓, 웹페이지 요청 로그 비활성화 + logging

    socketio = SocketIO(logger=False,engineio_logger=False) 웹소켓 - logger, engineio_logger 모두 False 로 변경시 웹소켓 로그 꺼짐 import logging log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) app.run() 실행전에 log 변수에 대해 위와같이 설정하면 flask werkzeug wsgi 로그가 에러를 제외하고는 출력되지 않음. logging옵션은 CRITICAL,ERROR,WARNING,INFO,DEBUG 등이 있다. 플라스크의 경우 기본수준은 WARNING으로 되어있고, werkzeug는 INFO 레벨로 되어있는듯. CRITICAL ~ DEBUG 순서로..

    [python] 콘솔에 출력되는 글자 색 변경

    C_RED = "\\033[31m" C_BLUE = "\\033[34m" C_END = "\\033[0m" ~~ def elog(message): print(C_RED+"========= taskview : "+message+"========="+C_END) def slog(message): print(C_BLUE+"========= taskview : "+message+"========="+C_END) 함수를 만들어서 쓰면 편함. 이걸 로그 찍는 용도로 만들었었는데, 로그 출력할때는 print보다는 logging.getLogger() 객체 생성하고 logging.loglevel 로 찍는걸 권장한다.