본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: recipe 프로젝트: 준비/insert 순서

반응형

mysql에서 스키마 및 테이블 생성

 

recipe 테이블

 

user 테이블

 

DB, 메모리에 접속할 수 있는 유저 생성

 
use mysql;
create user 'recipe_user'@'%' identified by 'yes1';
grant all on recipe_db1.* to 'recipe_user2'@'%';

ㄴ 부가설명은 하기 포스팅 참고: 

https://yeo0616.tistory.com/169

 

mysql쿼리문 작성 및 잘 동작하는지 확인

 
use recipe_db1;

select * from recipe;
 
insert into recipe
 (name, description, cook_time, directions)
 values
 ('김치찌개','맛있는 김치찌개 만드는 방법', 30, '먼저 고기를 볶은 후, 물을 넣고, 김치넣고, 끓인다');

 

DB 연결의 순서는 잘 기억하자

데이터 insert: 

1. DB에 연결
2. 쿼리문 만들기
3. 커서를 가져온다.
4. 쿼리문을 커서를 이용해서 실행한다.
5. 커넥션을 커밋해줘야 한다 => 디비에 영구적으로 반영하라는 뜻
6. 자원 해제

 

- mysql에서 잘 작동한다면, vscode로 들고온다. 

import mysql.connector
from mysql_connection import get_connection
 
name = '순두부찌개'
description = '된장찌개'
cook_time = 30
directions = '이렇게 저렇게 끓인다'
 
try :
    # 데이터 insert
    # 1. DB에 연결
    connection = get_connection()
 
    # 2. 쿼리문 만들기
    query = '''insert into recipe
            (name, description, cook_time, directions)
            values
            (%s,%s,%s,%s );'''
    record = (name, description, cook_time, directions)
 
    # 3. 커서를 가져온다.
    cursor = connection.cursor()
 
    # 4. 쿼리문을 커서를 이용해서 실행한다.
    cursor.execute(query,record)
 
    # 5. 커넥션을 커밋해줘야 한다 => 디비에 영구적으로 반영하라는 뜻
    connection.commit()
 
    # 6. 자원 해제
    cursor.close()
    connection.close()
 
except mysql.connector.Error as e :
    print(e)
    cursor.close()
    connection.close()

 

쿼리문에 변수가 하나일경우:

반드시 튜플로 표시한다.

이유는 cursor.execute()의 두번째 인자로 들어가는 데, 두번째 인자는 튜플로 입력해야하기 때문.

 

반응형