sqlalchemy
orm기능을 제공하는 python의 라이브러리
사용법
from sqlalchemy.orm import declarative_base
Base=declarative_base()
class ToDo(Base):
__tablename__="todo" #mapping 할 테이블의 이름을 명시
id=Column(Integer,primary_key=True,index=True)
contents=Column(String(256),nullable=False)
is_done=Column(Boolean,nullable=False)
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
DATABASE_URL="mysql+pymysql://root:root@127.0.0.1:3306/todos"
engine=create_engine(DATABASE_URL,echo=True)#echo는 query가 처리될 때 사용된 sql를 print
SessionFactory=sessionmaker(autocommit=False,autoflush=False,bind=engine) #사용자가 직접 commit을 하여 db에 적용
def get_db(): #사용한 connection은 close호출하여 안전하게 제거
session=SessionFactory()
try:
yield session
finally:
session.close()
from sqlalchemy.orm import Session
from typing import List
from sqlalchemy import select,delete
from database.orm import ToDo
#모든 row들을 조회
def get_todos(session:Session)->List[ToDo]:
select(ToDo)
return list(session.scalars(select(ToDo)))
#todo_id가 일치하는 row 조회
def get_todo_by_todo_id(session:Session,todo_id:int)->ToDo | None:
return session.scalar(select(ToDo).where(ToDo.id==todo_id))
#row 생성
def create_todo(session:Session,todo:ToDo)->ToDo:
session.add(instance=todo)
session.commit()# db save
session.refresh(instance=todo) # db read->todo_id
return todo
#row 변경
def update_todo(session:Session,todo:ToDo)->ToDo:
session.add(instance=todo)
session.commit()# db save
session.refresh(instance=todo) # db read->todo_id
return todo
#row 제거
def delete_todo(session:Session,todo_id:int)->None:
session.execute(delete(ToDo).where(ToDo.id==todo_id))
session.commit()
pymysql
mysql을 python에서 사용할 수 있는 라이브러리
사용법
import pymysql
db = pymysql.connect(host='funcoding-db.ca1fydhpobsc.ap-northeast-2.rds.amazonaws.com', port=3306, user='davelee', passwd='korea123', db='student_mgmt', charset='utf8')
cursor = db.cursor()
# SQL 문 만들기
sql = '''
CREATE TABLE korea2 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
model_num VARCHAR(10) NOT NULL,
model_type VARCHAR(10) NOT NULL,
PRIMARY KEY(id)
);
'''
# 실행하기
cursor.execute(sql)
# DB에 Complete 하기
db.commit()
# DB 연결 닫기
db.close()
sqlalchemy vs pymysql