1. λ²κ·Έ κ°λ₯μ±
user = db.query(user_id) μ΄ν user.nameμ μ κ·ΌνκΈ° μ μ userκ° NoneμΈμ§ νμΈνμ§ μκ³ μμ΅λλ€. λ§μ½ db.query(user_id)κ° Noneμ λ°ννλ©΄ AttributeErrorκ° λ°μν μ μμ΅λλ€. userκ° Noneμ΄ μλμ 보μ₯ν μ μλλ‘ None 체ν¬λ₯Ό μΆκ°ν΄μΌ ν©λλ€.python
if user is None:
return None # λλ μ μ ν μμΈ μ²λ¦¬
return user.name2. 보μ μ·¨μ½μ
python
query = "SELECT * FROM users WHERE username = ? AND password = ?"
result = db.execute(query, (username, password))3. μ±λ₯ μ΄μ
Order.query.all()λ‘ λͺ¨λ μ£Όλ¬Έμ λΆλ¬μ¨ ν for 루νμμ order.user.nameμ μ κ·Όνκ³ μμ΅λλ€. μ΄ κ²½μ° κ° μ£Όλ¬Έλ§λ€ μΆκ°μ μΌλ‘ μΏΌλ¦¬κ° μ€νλμ΄ N+1 쿼리 λ¬Έμ κ° λ°μν μ μμ΅λλ€. joinμ μ¬μ©νκ±°λ select_related() λ±μ νμ©νμ¬ κ΄λ ¨ λ°μ΄ν°λ₯Ό 미리 λ‘λνλ λ°©μμΌλ‘ μ±λ₯μ κ°μ ν μ μμ΅λλ€.python
orders = Order.query.join(User).all()
for order in orders:
print(order.user.name)4. μ½λ 컨벀μ μλ°
get_user ν¨μμ κ²½μ° νλΌλ―Έν° μ΄λ¦μ΄ user_idμΈλ° λ°ν κ°μ μ μ κ°μ²΄ μ체λ₯Ό λ°ννκ³ μμ΄ ν¨μμ μλκ° λͺ
ννμ§ μμ μ μμ΅λλ€. ν¨μ μ΄λ¦μ΄λ λ°νκ°μ μλ―Έλ₯Ό λͺ
νν νκ±°λ λ¬Έμνκ° νμν©λλ€.λ€μμ μ½λ 컨벀μ
μ λν μΆκ°μ μΈ κ°μ μ¬νμ
λλ€:
- login ν¨μλ λΉλ°λ²νΈλ₯Ό νλ¬ΈμΌλ‘ μ μ₯νκ³ μ λ¬νκ³ μμΌλ―λ‘, ν΄μ μ²λ¦¬λ₯Ό νλ κ²μ΄ μ’μ΅λλ€.
- print ν¨μλ₯Ό μ¬μ©νλ λΆλΆμ λλ²κΉ
μ©μΌλ‘λ§ μ¬μ©λκ³ μμμ κ°μ νκ³ , μ€μ μ½λμμλ λ‘κΉ
μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
μ΄ν:
μ μ½λλ λ²κ·Έ λ° λ³΄μ λ¬Έμ , μ±λ₯ λ¬Έμ λ± μ¬λ¬ κ°μ§ κ°μ ν¬μΈνΈκ° μμ΅λλ€. νΉν SQL Injectionκ³Ό N+1 쿼리 λ¬Έμ κ° λͺ
νν μ¬κ°λκ° λμΌλ―λ‘, μ¦μ μμ κΆμ₯ν©λλ€.