본문 바로가기

SQLAlchemy10

[SQLAlchemy 2.0, MySQL] Group by로 합계 구하기(2024년 최신) 요새 자체 제작해 사용 중인 교대근무 관리프로그램을 업데이트 하면서 오랜마네 자바가 아닌 파이썬을 사용했습니다. 이번 시간에는 이번달에 이 근무자가 몇시간 시간외를 했는지를 알기 위해서 Goup by와 sum을 SQLAlchemy(sql알케미)로 사용하는 방법을 알아보겠습니다. 처음에는 자바와 JPA로 할까 생각했었는지 제가 이번 코드를 작성하면서 느낀점은 처음 파이썬을 공부할 때 봤던 역시 인생은 짧기에 파이썬이 필요하다. 이 말이 왜 있는지 확실하게 느꼈습니다. 자바로 하게 되면 정말 많은 코드가 필요 했을텐데 파이썬을 이용하니 진짜 짧은 코드로도 원하는 코드를 완성할 수 있다는 걸 제대로 느꼈습니다. Life is short, you need Python. 인생은 짧기에, 당신에겐 파이썬이 필요하다.. 프로그래밍사업/사이드 프로젝트 2024. 6. 18.
[교대근무 관리프로그램] 관리프로그램 구현을 위한 FASTAPI - CRUD편- 월별, 연도별 데이터만 가져오기, 요일 구분하기 , in 사용법 이번 프로젝트에서 백엔드로는 FASTAPI를 사용하였습니다. CRUD를 구현을 위해 저는 SQLALchemy를 사용하여 연도와 월을 입력하면 해당 연도의 그 월의 자료만 가져올 수있는 기능(extract)과 날짜를 입력하면 요일(dayofweek,weekday )을 구분하는 기능 구현이 필요하였습니다. 아울러 or 대신 카테고리 데이터 유무를 판단할 수있는 in사용법도 알아보겠습니다. 요일 구분하는 기능 우선 쉬운 요일 구분하는 기능부터 알아보겠습니다. 요일을 구분하는 함수는 여러가지가 있지만 요일을 숫자로 구분하고 있습니다. 파이썬 datetime의 요일구분 파이썬의 datetime 라이브러리의 date.weekday(날짜) 함수에서는 월=0, 화=1로 구분하고 있습니다. from datetime im.. 프로그래밍사업/사이드 프로젝트 2022. 10. 4.
[교대근무 관리프로그램] 파이썬으로 교대근무 스케쥴표 엑셀로 저장하기 openpyxl로 스케쥴표를 엑셀로 저장하기 파이썬으로 엑셀을 사용하려면 openpyxl를 사용해야 합니다. openpyxl 기본 사용법, 딕셔너리의 키와 값을 바꾸는 방법 for문 안에 if없이 조건 사용하는 방법입니다. 기본 사용법 1. 워크북은 생성한다. wb = load_workboo(파일명) 2. 워크시트 객체를 생성한다. ws = wb["시트명"] 3. 셀에 값을 입력한다. ws.cell(row=1, column=1,value="A1") 4. 엑셀파일로 저장한다. wb.save(파일명) 물론 위에 방법 말고도 여러가지 방법이 있지만 제가 선택한 방법은 위에 방법입니다. 일단 이것에 앞서 저는 fastapi와 mysql을 이용해서 날짜별로 근무조를 입력해놓았습니다. 9월 1일을 예로 들면 주간 .. 프로그래밍사업/사이드 프로젝트 2022. 10. 3.
[교대근무 관리프로그램] 파이썬으로 교대근무 관리 시스템 만들어 보기 파이썬으로 교대근무 관리프로그램 만들기 프로젝트 왠만한 큰 기업들은 아마도 이미 교대근무 관련 시스템이 있을것이라 생각된다. 하지만 그렇지 못한 회사도 있기 마련... 그동안 쌓은 나의 프로그래밍 지식을 총 동원하여 교대근무 관리 시스템을 만들어 보았다. 물론 막 엄청나게 세련된 디자인과 기능을 가진 프로그램은 아니지만 지금 당장 필요한 기능들은 한 90%정도는 구현해보았습니다. 이번 포스팅에서는 A-Z까지 기능 구현을 어떻게 하는지 보다는 이 프로젝트를 하면서 제가 얻은 지식을 정리하는 시간을 가진다는 의미로 작성하였습니다. 프로젝트를 시작하게 된 계기 어쩌다보니 갑자기 교대근무의 시간외, 스케쥴표 등을 관리하는 업무를 맡게되면서 이 프로젝트를 시작하게 되었습니다. 일단 프로젝트 시작에 앞서 어떤 업무.. 프로그래밍사업/사이드 프로젝트 2022. 10. 3.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 3탄 데이터 가져오기(Read, SELECT문) SQLAlchemy로 데이터 가져오기 공식문서를 보니 SQL 알케미를 이용해서 데이터를 가지고 오는 방법이 정말 여러가지가 있었습니다. 1.x 방식과 2.0방식 두가지가 있는데 주로 인테넷에서는 1.x 스타일로 설명 된것이 많아 저는 2.0방식을 소개해보도록 하겠습니다. 공식문서의 1.x 스타일과 2.0 스타일 비교 https://docs.sqlalchemy.org/en/14/changelog/migration_20.html#migration-orm-usage Migrating to SQLAlchemy 2.0 — SQLAlchemy 1.4 Documentation Previous: What’s New in SQLAlchemy 1.4? Next: 1.4 Changelog Up: Home On this pa.. 프로그래밍사업/사이드 프로젝트 2022. 7. 7.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 2탄 삭제, 수정 SQLAlchemy로 삭제하는 법과 수정하는 법 FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 1탄에 이어 이번에는 SQL 알케미로 삭제하는법과 수정하는 법을 정리해보 겠습니다. 삭제하기(DELETE) 삭제하기는 간단합니다. 특정 데이터를 가지고 오는 Select문을 작성한 객체를 만들어서 세션의 삭제하는 함수에 변수로 넣어 주면 됩니다. def delete_users(db:Session,pk:int): # db_user = db.query(User).filter(User.id==pk).first() db_user = db.execute(select(User).filter(User.email=="user.email")).scalars().first() if db_user: db.delete.. 프로그래밍사업/사이드 프로젝트 2022. 7. 5.
SQLAlchemy로 이미 있는 데이터베이스(기존 테이블) 사용하기 SQLAlchemy로 이미 있는 MySQL 의 기존 테이블 사용하기 python으로 MySQL이나 SQLite, Postgres를 사용하기위해 SQLALCHEMY 다시 공부하고 있습니다. 그러던 중 dbeaver를 이용해 기존 테이블을 sqlalchemy 가지고 오는 방법이 필요하여 이번 포스팅으로 작성하면서 머릿속을 정리해 보았습니다. 이걸 알아보면서 그냥 PyMySQL로 할까 말까 하다가 제 나름대로 기준을 어느걸 쓸지 조건을 정해보았습니다. FASTAPI를 쓸데는 sql알케미로 그외에 단순 작업할때는 PyMySQL을 사용하려 합니다. 물론 이 기준은 언제 다시 바뀔지 모르지만... 일단 SQLALchmey로 기존에 있는 DB에 접속하여 사용하는 방법은 찾아보기 어려워 제가 한번 정리해보았습니다. 그.. 프로그래밍사업/사이드 프로젝트 2022. 7. 5.
FASTAPI 사용을 위한 SQLAlchemy(ORM) 기초 - 1탄 초기설정, 데이터 입력하기 다시 정리하는 SQL 알케미 본 내용은 https://fastapi.tiangolo.com/ko/tutorial/sql-databases/ 해당 링크의 설명과 공식문서를 참조하였습니다. 이전에 2021.08.16 - SQLALCHEMY를 이용한 PostgreSQL 사용법 을 정리한적이 있었습니다. SQLALCHEMY를 이용한 PostgreSQL 사용법 SQL 알케미랑 SQL 서버와 연결하는 부분 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker URL = "postgresql://아이디:비밀번호@서버주소/DB이름" engine = create_engine(URL,ech.. jh-industry.tistory.com 기.. 프로그래밍사업/사이드 프로젝트 2022. 7. 4.
ORM(SQLALCHEMY)에서 그냥 SQL로 하게된 이유 -제가 생각하는 ORM의 단점 시작하며 파이썬의 SQLALCHEMY, Flutter drift(Moor)와 같이 쉬게 데이터베이스를 사용 할수 있게 해주는 ORM들이 많습니다. 저는 플라스크를 접하면서 SQLALCHEMY에 대해 알았고 플러터를 접하면서 drift(Moor)를 알았습니다. 이런 ORM은 파이썬이나 다트 언어만 알고 있으면 SQL을 모르더라도(?) 어느정도 기능 구현, 사용은 가능하다는 장점이 있습니다. 하지만 저는 그냥 이제부터 파이썬으로 MySQL을 사용하여 서비스를 개발할때 ORM 사용을 줄이려고 합니다. 지금 부터 그 이유에 대해 써보려고 합니다. 가장 큰 이유는 자료가 많이 없다. 공식문서를 보면 좋겠지만 당장 내가 필요한 기능을 찾기에는 공식문서를 다 볼수도 없고, 구글링을 해봐도 쓰는 사람이 적어서 그런지 .. 플러터관련 정보/플러터-안드로이드 개발 2022. 4. 10.
[SQL] Postgres에서 중복도 제거하고 다른 컬럼 기준으로 정렬하기(DISTINCT, ORDER BY, subquery SQL(Postgres)로 해보기 //Postgres SELECT * FROM ( SELECT DISTINCT ON (중복을 제거할 컬럼명) * FROM 테이블명 WHERE name='a') as foo ORDER BY id DESC; // 정렬할 컬럼 python SQLAlchemy로 해보기 from sqlalchemy import desc // 중복을 제거한 서브커리를 생성한다. sub_images = db.query(테이블명).distinct(테이블명.컬럼명).filter(테이블명.컬럼명==컬럼에서찾을내용).subquery() // 서브커리를 ORDER BY로 정렬한다. tests = db.query(sub_images).order_by(desc("id")).all() SQLAlchemy에서 서브커.. 프로그래밍사업/사이드 프로젝트 2021. 11. 6.