전체 글

Python

[python error] SQL syntax error 1064

Before hour = datetime.datetime.now().strftime('%Y-%m-%d %H:00:00) q_sql = f""" select * from example where reg_date={hour}; """ Error pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '14:00:00' at line 3") syntax 오류가 있다는 내용의 에러를 만났다. sql 쿼리에 문법적인 문제가 있는 것이다. 살펴보니, hour가 문..

Python

[python] DataFrame 결합 - pandas.DataFrame.join

Pandas.DataFrame.join pandas는 조인/병합 유형 작업의 경우 인덱스 및 관계 대수 기능에 대한 다양한 종류의 집합 논리와 함께 Series 또는 DataFrame을 쉽게 결합할 수 있는 다양한 기능을 제공한다. 저번 글에서는 merge에 대해 다루어봤는데, merge가 join보다 세세한 설정이 가능하고 따로 설정을 하지 않아도 겹치는 열을 찾아 합쳐준다면 join은 index 설정을 해주어야 깔끔한 결합이 가능하다. join은 merge 함수를 기반으로 만들어졌기 때문에 기본 작동 방식이 비슷할 수 있다. 그럼 오늘은 join에 대해 살펴보자. 공식 문서 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html..

Development

[nginx] http to https redirection 설정

Ubuntu 22.04.2 LTS, nginx 1.18.0 기준으로 작성했습니다. Certbot을 통해 letsencrpt 설정을 마치고 SSL 인증서까지 받았다면, https로 도메인 연결이 가능해진다. 더 나아가 http로 접속하는 사용자들을 https로 리다이렉트해주고 싶은 경우에 다음과 같은 설정을 해준다. Dafault server configuration 수정 /etc/nginx/sites-available/default 설정파일의 server블록 내부를 다음과 같이 수정하면 해당 도메인으로 접속한 사용자를 지정한 주소로 자동 Redirection 시킬 수 있다. server { listen 80; server_name 도메인.com; return 301 https://$server_name$..

Python

[python] DataFrame 결합 - pandas.merge

pandas.merge pandas는 조인/병합 유형 작업의 경우 인덱스 및 관계 대수 기능에 대한 다양한 종류의 집합 논리와 함께 Series 또는 DataFrame을 쉽게 결합할 수 있는 다양한 기능을 제공한다. 저번 글에서는 concat에 대해 다루어봤는데, 조금 다른 결인 merge를 살펴보고자 한다. pandas.merge는 두 데이터프레임을 각 데이터에 존재하는 고유값(key)을 기준으로 병합할 때 사용한다. 옵션(매개 변수)에 따라 합치는 방법이나 결과가 다양해지기 때문에, 원하는 방식에 맞게 옵션을 선택해서 사용해야 한다. 공식 문서 https://pandas.pydata.org/docs/reference/api/pandas.merge.html https://pandas.pydata.org..

Python

[python] DataFrame 결합 - pandas.concat

pandas.concat pandas는 조인/병합 유형 작업의 경우 인덱스 및 관계 대수 기능에 대한 다양한 종류의 집합 논리와 함께 Series 또는 DataFrame을 쉽게 결합할 수 있는 다양한 기능을 제공한다. concat 외에도 merge, join 등의 함수도 있으나, 먼저 concat을 살펴보도록 한다. concat은 DataFrame을 물리적으로 이어붙이는 기능을 한다. 옵션(매개 변수)에 따라 합치는 방법이나 결과가 다양해지기 때문에, 원하는 방식에 맞게 옵션을 선택해서 사용해야 한다. 공식 문서 https://pandas.pydata.org/docs/reference/api/pandas.concat.html parameter(매개 변수) 살펴보기 모든 매개 변수 및 기본 default ..

Development

[Ubuntu] GitLab 설치 및 설정

GitLab 효과적인 팀 프로젝트 개발 환경과 형상 관리를 위한 GitLab 도입 GitLab은 Git 원격 저장소(Repository) 관리 뿐만 아니라, 이슈 트래킹, 코드 리뷰, Wiki, CI/CD, 테스트, 모니터링 등 전체 소프트웨어 개발 라이프사이클에 필요한 기능을 제공합니다. GitLab은 단일 애플리케이션으로 제공되는 완전한 DevOps 플랫폼입니다. 간소화된 소프트웨어 워크플로를 생성하여 서로 짜 맞추어진 툴체인의 제약에서 조직을 벗어나게 합니다. 현대적인 소프트웨어 개발 방법인 클라우드 네이티브(Cloud Native) 환경 구축에 필요한 DevOps, Container, Kubernetes, CI/CD를 위한 기능을 제공합니다. GitLab 가이드 https://insight.inf..

Python

[python] ast.literal_eval VS eval 비교하기

문자를 그대로 실행하고 싶을 때 pandas.DataFrame으로 데이터를 읽어왔더니 값에 리스트가 통째로 들어있거나, 딕셔너리가 들어있는 경우가 있던 적이 있다. 해당 값은 진짜 리스트, 진짜 딕셔너리가 아닌 그런 척 하는 문자열일 뿐이었다. 이런 경우에는 어떻게 값을 처리해주어야 할지 난감할 수 있다. 이 때 사용할 수 있는 ast 모듈과 eval 함수를 소개하고 그 차이를 비교해보자. ast.literal_eval 공식 문서 https://docs.python.org/3/library/ast.html#ast.literal_eval ast 모듈은 문법을 구조화 시켜주는 모듈이다. 그 중 literal_eval 함수는 이름처럼 문자(literal) 그대로 평가(evaluate)하는 것이다. 즉, str..

Python

[python] csv 모듈 사용하기

csv CSV란 Comma Separated Values의 약자로, 쉼표로 구분된 값이라는 뜻이다. 이 형식은 스프레드시트와 데이터베이스에 대한 가장 일반적인 가져오기 및 내보내기 형식으로, 데이터를 좀 다루어 보았다면 모를 수가 없는 파일 형식이다. csv 모듈은 CSV 형식의 데이터를 읽고 쓰는 클래스를 구현한다. 다른 응용 프로그램에서 이해할 수 있는 CSV 형식을 기술하거나 자신만의 특수한 용도의 CSV 형식을 정의할 수도 있다. csv 모듈을 활용해 가장 간단한 읽기와 쓰기를 사용해보자. 공식 문서 https://docs.python.org/3/library/csv.html 읽기 csv.reader import csv f = open("data.csv", "r") reader = csv.read..

Development

Daemon 알아보기

Daemon 데몬은 유령, 악마처럼 죽지 않고 떠다니고 있다는 뜻에서 유래했다.😈 Unix 운영체제에서 부팅 시 자동으로 켜지고 백그라운드에서 계속 실행되는 프로세스이다. 윈도우의 서비스 같은 개념이라고 보면 된다. 백그라운드 프로세스 중 부모 프로세스(PPID)가 1 혹은 다른 데몬 프로세스인 프로세스이다. 즉 PPID(parent id)가 1이고, SID(session id) 역시 자신의 아이디와 같다는 특징을 가지고 있다. 이름 뒤에 데몬의 d가 붙은 inetd, syslogd, crond, httpd 등을 예로 들 수 있다. fork off and die 데몬은 일반적으로 자식 프로세스를 포크(fork)하여 생성하고 스스로 자신을 죽이면서 고아가 된 자식 프로세스를 자기 밑으로 데려가도록 하는 방..

Python

[python] APScheduler 사용하기

APScheduler python script를 원하는 시간에, 혹은 원하는 주기마다 실행해야 한다면 스케줄링에 대해 고민해야한다. 나의 경우는 DB에 데이터를 업데이트 하기 위한 python 파일을 일정 시간(1시간, 10분 등)마다 실행하고자 했다. 이런 경우 python 스케줄링 라이브러리로 APScheduler를 사용해보자. 데몬이 아니며 이미 존재하는 앱 내에서 간단한 구현으로 쉽게 사용이 가능하고, SQLAlchemy, mongoDB, Redis 등의 백엔드와 함께 사용 가능하다. 공식 문서 https://apscheduler.readthedocs.io/en/3.x/ 트리거 타입 종류 date : 특정 시점에 작업을 한 번만 실행 ex) run_date='2023-07-20 15:30:00' ..

so-so
아무튼 실행