
Engine: DB 연결 객체

Session: DB 작업을 실행하는 통로

Base

Model



데이터베이스 생성

테이블 생성

데이터 삽입

데이터베이스 조회

데이터베이스 수정

데이터베이스 삭제




라우트 모음집 : 기능별로 주소와 핸들러를 분리하는 방법

user_blp = Blueprint("users", name, url_prefix="/users")
url_prefix="/users"




> python # 파이썬 쉘로 접속
from db import db
from app import app
from models import User
with app.app_context():
# 코드 작성
# 앱 컨텍스트 열기
>>> with app.app_context():
... new_user = User(name='newuser', email='newuser@example.com') # 인스턴스 생성
... db.session.add(new_user) # DB에 추가
... db.session.commit() # 실제 저장
... user = User.query.filter_by(name='newuser').first() # 조회
... print(user)
user.name # newuser
user.email # newuser@example.com
# 모든 레코드 조회하기
with app.app_context():
users = User.query.all() # 전체 데이터를 리스트 형태로 반환
for user in users: # for문을 돌면서 각 사용자 객체의 id, name, email을 출력
print(user.id, user.name, user.email)
# 특정 조건을 만족하는 User 조회
with app.app_context():
users = User.query.filter_by(name='coding').all()
# name='coding' 조건을 만족하는 모든 레코드를 가져옴
print(users)
with app.app_context():
user = User.query.filter_by(name='newuser').first()
# 조건(name='newuser')을 만족하는 첫 번째 레코드를 가져옴
# .first()는 딱 한 건만 반환 (없으면 None).
if user: # if문을 통해 존재 여부를 체크한 뒤 정보 출력.
print(f'Name: {user.name}, Email: {user.email}')
else:
print('User not found')
# 레코드 수정
with app.app_context():
user = User.query.filter_by(name='newuser').first()
# name='newuser'를 가진 사용자를 찾아서 email을 변경.
if user:
user.email = 'updated@example.com' # 객체 속성 변경
db.session.commit() # 실제 DB에 저장
print('User updated')
else:
print('User not found')
with app.app_context():
user = User.query.filter_by(name='newuser').first()
# name='newuser'를 가진 사용자를 찾아서 삭제.
if user:
db.session.delete(user) # db.session.delete(user) → 세션에서 삭제 예약
db.session.commit() # 실제 DB에서 반영
print('User deleted')
else:
print('User not found')