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 (커서 닫기) |
'BackEnd > Python-Flask' 카테고리의 다른 글
[백엔드] Flask: Python 으로 DB 수정, Update (0) | 2022.06.26 |
---|---|
[백엔드] Flask: Python에서 DB에 데이터 insert (0) | 2022.06.26 |
[백엔드] Flask: request.get_jason() (0) | 2022.06.21 |
[백엔드] Flask: return 타입, jsonify() (0) | 2022.06.21 |
[백엔드] Flask : @app.route() 의미 (0) | 2022.06.21 |