본문 바로가기

728x90
반응형

전체 글

(263)
PostgreSQL: query 기록하고 보기 - table(view)로 보기 # ORM # raw query # extension # pg_stat_statements orm으로 query를 작성한 경우, orm이 실제 query로 어떻게 변했는지를 파악하고 싶을 때가 있다. PostgreSQL의 경우 실제 query를 table 형태로 저장해서 보도록 하자 OS: ubuntu 22.04 기준 1. postgresql.conf 에 shared_preload_libraries를 찾아서 주석을 풀고 다음과 같이 적자 ubuntu 기준 기본 postgresql.conf 위치: /etc/postgresql/[VERSION]/main/postgresql.conf 더보기 shared_preload_libraries = 'pg_stat_statements' 2. 쭉 내려서 아래에 다음도 추가 더보기 pg_stat_statements.track = all pg_stat_stateme..
Linux shell: alias 대신 함수로 동적으로 명령어 실행하기 # dynamic command FastAPI를 실행하는 uvicorn main:app --reload 나 Django를 실행하는 python manage.py runserver 위와 같은 명령어를 실행하는 경우에 너무 길어서 alias 등록을 할 수 있는데, port 번호를 그때그때 원하는 대로 실행시키려면 alias 대신에 함수를 이용하면 된다. 위 두 명령어는 기본적으로 8000 포트로 실행되는데, 포트번호를 기입해서 명령어를 실행하면 해당 포트로 실행이 되도록 bashrc에 등록해보자 FastAPI를 8001번 포트로 실행시킨다 하면 다음과 같다 uvicorn main:app --reload --port 8001 위 명령어들을 shell에 다음과 같이 등록해보자 1. .bashrc 파일 오픈 nano ~/.bashrc 2. 명령..
Keyboard: 다얼유 키보드 블루투스 설정 # A87 Pro fn + 1, 2, 3 으로 슬롯 먼저 정하기 (1, 2, 3 중 어떤 항목을 연결할지 정하고) fn + q 를 3초 가량 누르고 있으면 마우스/블루투스 LED 판이 빨간색으로 반짝반짝 거리면서 블루투스가 잡힘 연결하면 됨
MySQL: No_ZERO_DATE # 0000-00-00 새로운 프로젝트가 이전 버전의 프로젝트 DB에서도 돌아가는지 확인하는 작업 중 아래 오류 발생 ERROR 1067 (42000): Invalid default value for 'SOME_COLUMN' 위 SOME_COLUMN은 date 타입의 컬럼 MySQL에서 date 타입 컬럼의 default value가 0000-00-00으로 할 수 없어서 생기는 오류 (0000-00-00으로 .sql 파일에 DDL 문이 만들어져 있던 것은 해당 값이 가능한 구버전이었거나, 가능하도록 default 값을 변경해준 것으로 추정) 해당 에러는 0000-00-00 과 같은 날짜는 현실에서 존재하지 않는 date 이와 같이 실제로 존재 하지 않는 date를 값으로 입력하는 것을 방지하고 있음 설정을 위와 같이 바꿀 수도..
FastAPI & SQLAlchemy: SQLAlchemy from 1.4 to 2.0 DB 연결 from fastapi import Depends from sqlalchemy import create_engine from sqlalchemy.orm import Session, sessionmaker from typing_extensions import Annotated engine = create_engine(DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, expire_on_commit=True) async def get_db() -> Session: db = SessionLocal() try: yield db finally: db.close() db = Annotated[Se..
Python: datetime strftime strptime 의미 구분, # 어떤 의미? python 내장 라이브러리인 datetime을 통해서 특정 시간을 문자열로, 문자열을 특정 시간으로 변환 가능 이때, strftime과 strptime이 있는데, 이 의미를 알지 못해서 구분이 잘되지 않아 찾아보았다. strftime은 datetime 형태의 데이터를 문자열로 바꿔주고 strptime은 날짜형태로 되어 있는 문자열을 datetime 데이터로 바꿔준다. strftime: string format time (string format의 time) strptime: string parse time (string을 parse해서 time으로) 이제 헷갈리지 않고 기억이 잘 나지 않으려나
Python: python-dotenv - .env 파일 관련 library # load_dotenv # override 환경변수로 사용할 부분을 .env 파일로 따로 빼서 관리하는 경우에, 파이썬에서 해당 파일에서 변수를 불러오는 방법중의 하나로 python-dotenv 라이브러리가 있다. 설치: pip install python-dotenv from dotenv import load_dotenv import os load_dotenv()# .env에 있는 변수를 환경변수로 불러오기 os.getenv("DEBUG", False) # 환경변수에서 "DEBUG"로 이름이 되어있는 변수의 값 가져오기, 없을경우 False를 default 값으로 사용 위와 같이 하면 일반적으로 된다. 그런데, 잘 작업을 하던 중에 이상한 에러가 발생... # .env DEBUG = "False" # True or False .env 파일에 위와..
python sqlalchemy: MySQL, PostgreSQL 호환 작업 python ORM library중 하나인 sqlalchemy를 MySQL, PostgreSQL 모두 동작이 가능하도록 호환성을 고려하여 사용하기 1. Boolean: MySQL이든 PostgreSQL이든 Boolean Column 속성 사용하기 MySQL tinyint vs PostgreSQL boolean MySQL은 Boolean을 표현할 때 tinyint 타입을 권장 0을 false, 1을 true로 sqlalchemy로 Boolean type을 import하고 Column을 Boolean으로 설정하면 생성된 table의 column이 tinyint(1)로 설정되어 있는 것을 확인 가능 PostgreSQL은 boolean 타입 지원 boolean 타입 속성 컬럼에는 false, true 값이 들어..

728x90
반응형