본문 바로가기

BackEnd/Python-Flask

[백엔드] Flask: Python으로 DB접속/이용순서

반응형

Python으로 DB 접속하여 데이터 처리

 

우선적으로, mySQL workben에서 DB 스키마와 테이블 설계를 한다.

 

recipe 테이블 및 user테이블을 생성한다.

관련 프로젝트 진행은 하기 링크 참고

 

 

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

use mysql;
create user 'recipe_user'@'%' identified by 'yes1';

- @ 골뱅이 좌측이 아이디, 골뱅이 우측은 네트워크 통해서 접속 가능하겠다라는 뜻

- identified by 뒤가 비밀번호

- 이 유저로 어디에 접속할수 있게, 이 유저가 리모트로 접속할 수 있게, 아이디와, 비번을 설정한다.

 

 
grant all on recipe_db1.* to 'recipe_user2'@'%';

- 해당 유저로 특정 데이터 베이스만 처리할 수 있게 설정해준다.

- 이 유저에게 이 스키마 안에서 모든 권한을 주겠다라는 뜻.

- recipe_db1.*: 이 DB의 모든 테이블을 작업할 수 있도록 설정

- .(점)은 ~의 라는 뜻

 

그럼 이제 파이썬에서 이 아이디로 접속을 해서, 데이터 처리를 할 수 있다.

DB처리를 위해서  파이썬의 라이브러리가 필요하다. 

 
pip install mysql-connector-python

 

- 새로운 프로젝트를 시작하므로, 깃허브에서 새로운 레파지토리를 만들고, 로컬에 클론한다.

- 새로운 레파지토리의 vscode에서 파일 app.py와 my_sql_conncetion.py를 생성한다.

 

mysql workbench에서 작성했던 유저 정보로 파이썬에서 mysql을 연결하는 코드는 하기와 같다. 해당 코드는 생성한 my_sql_conncetion.py에서 작성한다.

 
import mysql.connector

def get_connection():
    connection = mysql.connector.connect(
        host = 'yeo*******.rds.amazonaws.com',
        # host 를 적어야, 접속할수가 있다. host 이름은 mysql참고 혹은 aws 참고
        database = 'recipe_db1',
        # mysql의 스키마 이름
        user = 'recipe_user',
        password = 'yes1’'
    )
    return connection
# 파이썬에서 mysql로 접속하는 코드

# 내가 mysql로 작성했던 내용과 같은 정보가 들어가야한다. (아래 참고)
# Host는 내가 mysql정보에서 확인 가능하다. 혹은 AWS에 들어가서 확인이 가능하다.

- 절대 admin 계정은 사용하지 않는다. 

- my_sql_conncetion.py 파일에는 상기 코드를 작성하고 가급적 작업할 때는 건들지 말자.

 

- mysql에서 host 확인 방법:

홈 화면에서 생성한 컨넥션 우클릭 후 Edit Connection 클릭

 

등록되어있는 Hostname을 복사하자! 


파이썬으로 DB접속하는 이용순서

 

0. 파이썬의 라이브러리 설치: pip install mysql-connector-python

1. mysql 컨넥터 모듈 임포트: import mysql.connector

2. connect() 메소드 사용: mysql에 connect: 호스트명, 로그인, 암호 접속할 DB등을 파라미터로 지정한다.

3. cursor() 메소드 사용: Connection 객체로부터 cursor()메서드 호출하여 cursor 객체를 가져온다. 자세한 설명은 하기 참고

4. execute() 메소드 사용:  SQL 문장을 DB 서버에 보낸다.

5. 결과는 fetchall() 사용:cursor.fetchall() 혹은 fetchone() 혹은 fetchmany(): 데이타를 서버로부터 가져온 후, Fetch 된 데이타를 사용한다.

6. Connection 객체의 commit() 메서드사용: 삽입, 갱신, 삭제 등의 DML(Data Manipulation Language) 문장을 실행하는 경우, INSERT/UPDATE/DELETE 후 데이타를 확정 갱신한다. 

7. cursor. close() 그리고, connection.close(): DB 연결을 닫는다

 

- 데이터베이스 커서(Cursor)는 일련의 데이터에 순차적으로 액세스할 때 검색 및 "현재 위치"를 포함하는 데이터 요소이다.

- ‘커서’는 SELECT 문장 등에 의한 데이터베이스 검색에 의한 검색 실행 결과를 한 줄씩 검색하고, 처리하기 위해 데이터베이스 서버 측의 결과 집합과 행 획득 위치를 나타내는 개념을 말한다. 커서의 정의와 그 작업은 주로 응용 프로그램 등의 절차적 언어에서의 SQL 실행시 사용한다.

DECLARE CURSOR (커서 정의)
OPEN (커서 열기)
FETCH (커서 포인터가 가리키는 위치의 행 데이터를 검색하고 포인터를 일행 분 진행)
UPDATE (커서 포인터가 가리키는 위치의 행 데이터 업데이트)
DELETE (커서 포인터가 가리키는 위치의 행 데이터 삭제)
CLOSE (커서 닫기)



반응형