본문 바로가기
반응형

PYTHON78

Django - django-admin을 찾지 못할때 django 패키지를 설치했는데 django-admin을 찾지 못한다면, path 경로에 문제가 있을 수 있다. 먼저 자신이 설치한 pip 혹은 pip3의 버전 정보를 통해 python이 동작한 디렉토리를 확인한다. pip -version 확인해보면 아래와 같이 현재 동작한 경로 정보를 알 수 있다. 패키지에서 사용하는 파일은 윈도우 기준으로 위 디렉토리 하위에 LocalCache\local-packages\Python버전 명\Scripts 위치한다. 해당 경로로 이동하여 LocalCache 디렉토리가 있는지 확인한후 따라 들어가도록 하자. PS C:\Users\Han\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0> l.. 2024. 3. 10.
Python - Datetime 특정 시간 간격으로 나누기 DateTime을 특정 시간으로 나누어 실행해야 하는 경우 유용한 함수이다. 방식은 시간의 차이를 계산한 후 이를 나누어야 하는 타임값으로 나누어 저장하는 방식이라고 할 수 있다. 코드는 아래와 같다. import datetime def split_time_range(start_time, end_time, interval): # 시작 시간과 종료 시간을 UTC로 변환 start_time = datetime.datetime.combine(start_time.date(), start_time.time(), tzinfo=datetime.timezone.utc) end_time = datetime.datetime.combine(end_time.date(), end_time.time(), tzinfo=dateti.. 2024. 3. 10.
Python - Databse BLOB 란? 사용법 BLOB(blob)는 Binary Large Object의 약자로써, 보통 기본적으로는 사진과 파일과 같은 블록형 데이터를 저장하는 용도이다. 따라서 Database의 자료 형태 역시 Byte를 기본으로 하고 있어서, 이러한 자료를 저장하는데 최적화 되어 있다고 할 수 있다. 그렇다면 Python에서는 어떻게 사용할 수 있을까? 가장 쉽게는 SQLachemy를 이용하는 방법이 있을 것이다. 1. BLOB 데이터 입력하기 데이터를 입력하기 위해서는 먼저 SQLachemy 는 LargeBinary 라는 타입으로 선언해주는 것이 좋다. 아래는 클래스를 선언하는 예시이다. from sqlalchemy import LargeBinary, MetaData class User(Base): __tablename__ =.. 2024. 3. 7.
Python - HTTP Keep-alive 를 통한 성능 향상 HTTP Keep-Alive를 이용하면, TCP 세션을 연결하는 작업을 하지 않고 추가적인 데이터를 보낼 수 있기 때문에 많은 장점을 가지게 된다. Nginx에서도 Keep-alive를 활성화 할 경우 50%이상의 성능을 더 올릴 수 있기 때문에 만약 웹 요청을 진행해야 하는 경우 Keep-alive 사용 가능 유무를 추후 꼭 체크하는 것이 좋다. 파이썬을 통한 일반적인 요청은 아래와 같다. import requests import time import logging logging.basicConfig(level=logging.DEBUG) url = "https://httpbin.org" start = time.perf_counter() requests.get(url) requests.get(url) r.. 2024. 3. 7.
Python - AWS S3 Select 와 Atena 차이점, 기본 사용법 AWS를 이용하면 S3에 저장되어 있는 데이터를 확인해야 한 경우가 종종 발생한다. 이띠, Atena와 Select를 이용해서 S3에 저장되어 있는 자료를 검색해 부분적으로 가져올 수 있는 기능을 통해 원하는 자료만 빠르게 검색할 수 있다. 먼저 S3 Select와 Atena의 기본적이 차이를 알아보도록 하자. S3 Select 와 Atena 차이점 AWS Select: 가장 비용을 효율적으로 원하는 S3와 Glacier 에서 데이터를 검색할 수 있는 방법이다. AWS Athena: ANSI SQL 방식으로 완전한 SQL 쿼리를 사용할 수 있다. - group by, having, window, geo in SQL DDL and DML등 따라서 검색 위주로 사용하는 경우 S3 Select, Atena는 .. 2024. 3. 7.
Python - 딕셔너리(dict) 리스트 정렬 하기(sort) Python 에서는 sort를 이용하여 리스트를 정렬하는 기능을 제공하고 있다. 간편하게 sort라는 내장 함수를 이용하면, 손쉽게 정렬이 가능한데, 일반적인 List 리스트는 이렇게 진행할 수 있다. >>> int_list = [3,5,6,9,2] >>> int_list [3, 5, 6, 9, 2] >>> int_list.sort() >>> int_list [2, 3, 5, 6, 9] >>> int_list.reverse() >>> int_list [9, 6, 5, 3, 2] 한글 역시 가능하며, reversed 내장 함수를 이용하면 추가적인 조작도 가능해진다. 그런데 Key와 Value가 있는 경우에는 리스트 내장함수로는 어렵고 sorted 라는 별도의 내장함수를 이용하여 Lamda로 처리하여야 한다.. 2024. 3. 6.
구글 애드센스 - 광고 무효 클릭 방지 코드/Scrpit 적용하기 블로그를 운영하는 경우 종종 광고 무효 클릭 으로 부터 안전할 수 없다. 이유는 인위적으로 광고 트래픽을 만들어서 광고 수익을 얻는 행위를 막기 위해서 구글 애드센스에서는 동일한 아이피에서 과도한 광고 클릭을 부정행위로 간주한다는 것이다. 그러면 최소 1일에서 최대 30일간 애드센스의 광고비 지급이 중단되는 상황이 발생하게 된다. 따라서 적절하게 대응을 해야 하는데, 이를 직접 광고 클릭 공격을 막기는 쉽지않다. 따라서 아래와 같은 과도한 클릭을 방지하는 자바 스크립트를 통해 공격 방어가 가능하다. 스크립트는 스킨에서 부분에 적용하면 된다. 위 내용을 복사하여 아래와 같이 넣으면 된다. 마지막에 click 과 interval 은 직접 알맞게 조정이 가능하며, inverval은 ms로 기본값은 23초로 이.. 2024. 3. 4.
Python - 리소스 및 코드 하나로 실행, Single-file executables 프로그램을 제작하다보면, 간편하게 배포 할 수 있도록 하나의 파일로 생성해야 하는 경우가 많다. 이유는 프로그램을 실행하는 사람 입장에서는 개발자의 개발 의도를 온전히 이해하기가 어렵기 때문에 운용해야 하는 파일이 많거나 실행 단계가 많다는 것은 사용자에게 복잡함과 실행 오류를 발생할 수 있는 가능성을 높이기 때문에 이를 간소화 하는 것은 매우 중요하다. C# 기준으로도 아래와 같은 리소스를 exe하나로 만드는 형식으로 배포를 많이 하게 된다. 다만 파이썬은 스크립트 형태의 프로그램이기 때문에 리소스를 별도로 구분하지 않고 실제 코드 내용을 생성하고자 하는 Main 파일에 넣어주어야 하며, 파이썬 코드 특성상 들어쓰기를 주의해야 하기 때문에 라인별로 들어쓰기 유지가 가능하도록 구성하면 된다. 먼저 코드를.. 2024. 3. 3.
Python - sqlalchemy bigint를 id 값으로 사용해야 하는 이유 Python 의 기본 ORM 을 사용한다면, id 필드를 통한 unique 값 생성이 기본이다. 기본값은 INT인데, INT로 생성할 경우 최대 생성 가능한 컬럼이 2,147,483,647 까지 가능하다. 만약 이값을 넘어간다면, 추후 BIGINT로 변경하는 것을 고려해야 한다. 따라서 되도록 초기 구성시 INT보다 큰 값을 제공하는 BIGINT를 이용하기를 추천한다. 위 문서에 보면, BigInteger를 통해서 선언이 가능하다. The Type Hierarchy — SQLAlchemy 1.4 Documentation class Asecurity(Base): __tablename__ = "asecurity_table" id = Column(BigInteger, primary_key=True, index.. 2024. 3. 3.
반응형