주요 정보
- 교육 과정명 : 클라우드기반 스마트융합보안 과정 16기
- 교육 회차 정보 : '23. 11. 1. 인프라 활용을 위한 파이썬 과정 #7
참고 정보
- 트랜잭션 특징 : 원자성, 일관성, 독립성, 지속성
보완할 점
- DB 실습 미완성(sqlalchemy 부분, DB Lock 오류 미해결)
피드백
- 파이썬 이미지 사용법( PIL 모듈 사용 :from PIL import Image )
- 동기, 비동기 프로그래밍 방식 및 멀티스레드 방식과 차이
- DB 기초(ORM, DB 툴 사용 방법)
동기, 비동기 프로그래밍 및 멀티스레드 방식 차이
- 비동기 방식 프로그래밍이란? 특정한 곳에 자원을 할당하기 위해 자원의 사용을 Lock 한다. (EX; 간섭 방지, 채팅 서버)
- 채팅을 할때에는 상대방 메시지 수신을 대기하는 것이 아니라 송,수신이 별도로 진행.
- 비동기 방식 실습 환경 : VSC, .py 파일 사용 (.jpynb 파일에서는 별도 설정 필요)
- 동기 방식 , 비동기 방식
비동기 프로그래밍과 멀티 스레딩 차이는?
- 비동기 프로그래밍(작업_task 관련) : 동시 여러 일 발생 가능. 한 일을 시작하고, 그 동안 콜백 함수를 실행한다. 모든 행위 종료 시 모든 결과 호출
- 멀티 스레딩(작업자_thread 관련) : 하나 이상의 순차적 명령어 세트를 동시/병렬적으로 실행하는 것을 의미
참고 블로그
파이썬 이미지 사용법
- PIL 버전 10.1.0 사용
- 참고 공식 문서 (모듈 사용시 버전 및 공식문서 확인)
PIL 사용 실습
from PIL import Image
img = Image.open('test_image\\apple_jacks.jpg')
print(type(img))
img.show()
img
print(img.format, img.size, img.mode)
img = Image.open('test_image\\apple_jacks.jpg')
box = (100,100,400,400)
region = img.crop(box)
region.show()
출력
DB 기초
DB 실습
- sqlite3 설치 및 CMD 창에서 sqlite3 명령어로 접속(환경변수 설정 또는 해당 실행 파일 위치에서 실행)
- CMD 창에서 sqlite 접속 어렵다면, DB브라우저 사용해 접속 가능
- SQLite, DB 브라우저 프로그램설치
- DB 브라우저에 SQLite로 생성한 DB(아이콘)을 끌어다 넣는다.
- DB 브라우저 참고내용
-테이블 생성 방법 : 테이블 생성하기 – 필드 – 추가
-
pk :프라이빗 키, 해당 테이블 접근 필요
-
U : 유니크, 해당 필드는 유니크하다. 즉, 동일한 필드 생성 불가)
-
AI : auto increase 설정시 값 추가하면 자동 지정
-
NN : Null 허용 안 함. not null
-
테이블에 행 넣기(데이터 넣기)
-
SQL 실행
-
DB브라우저로 테이블 추가. 테이블에 데이터 INSERT INTO 시도.
-
DB 파일(test), 위치 : C:\Windows\System32\cmd.exe
-
환경변수 지정해서 (C 드라이브에 sqlite 3.exe 3개 파일을 넣는다) CMD 실행 후 위치 상관없이 실행 가능하다. (원래는 해당 프로그램 있는 곳 까지 가서 실행해야 한다.)
-Shift F5 는 해당하는 줄만 실행한다.
-DB 브라우저 사용해 DB생성 및 SQL 사용으로 데이터 추가
INSERT INTO users(user_id, user_name, user_pwd, description) VALUES('ryugyoseo', 'david','#1234','오냐오냐오냐냐.');
SELECT * FROM users /* users 테이블로부터 모든 항목 가져오기
DELETE FROM users WHERE id>2; /* id가 2이상인 데이터 삭제
SELECT * FROM users
- 변경사항 저장하기
- DB 수정 후 상태 저장해야 다른 툴에서도 DB 열람시 적용된 결과 획득가능
DBeaver 23.2.3 사용
- sqlite 지원한다.
- 생성한 DB를 열고, 관련 드라이버 다운로드( test.db 열람 시도시 드라이버 설치 페이지 생성)
- SQL 편집기 사용방법 : SQL 편집기 - SQL 편집기
- SQL 문 입력 후 실행 방법 : 우클릭 – 실행 – SQL 문 실행
- 다른 DB로 MobaXterm 사용한다. 강사님은 AWS 접속시에도 사용한다.
- DB 데이터 수정(update, insert) 시 트랜잭션으로 처리한다.
트랜잭션이란? 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
일반적으로 DB 수정 바로 되는 것이 아니라 롤백 가능
● 파이썬에서 SQLite 다루기
-sqlite는 파이썬에서 기본 내장 (import sqlite3)
- 파이썬에서 connect 로 연결/생성한 DB를 DBeaver에서 가져오기 : Database Navigator 우클릭 – 연결 – sqlite - connection 추가 – DB 연결해주기
- connection 상태 DB는 close 해주어야 한다.
- 커서 생성 : 실행자 역할
- SQL 문을 DB브라우저에서 만든 후 파이썬에서 커서를 사용해 테이블 생성
- 파이썬에서 curser.execte 메소드 사용시,
- SQL 문법 사용 -> 트랜잭션처리로 DB 바로 반영
- 명령어로 넣기 -> 요청 메모리 일시저장. commit 으로 DB 반영
- commit() 으로 반영 롤백은 conn.rollback()
-마리아 DB, MySQL DB 는 DB 내 다양한 DB 존재, sqlite 는 DB 1개만 사용한다.
● 파이썬에서 sqlite 와 pands 사용
- 파이썬 확장 툴에서 ‘ SQLite ’ 사용한다
- 해당 확장 툴에서 새로운 쿼리 생성, DB 열기 등 실행 가능..
ORM이란? 객체와 RDS DB 데이터 자동 매칭(연결)한다는 의미
(Object Realationship Mapping, ORM)
가상 세계(DB)를 현실 세계와 동기화(반영)하기 위해 (데이터)
프로그래밍에서는 객체 지향 사용 (Object 필드)
DB 상에는 객체 지향 사용 불가
위 서로다른 가상환경의 간극을 해소하기 위해 ORM이 프로그래밍상의 클래스, 변수들을 DB의 필드와 매칭시켜준다.
ORM 프레임 워크 중... sqlalchemy 사용한다
● sqlalchemy 사용
- pip install sqlalchemy
- 테이블을 생성한후 DBeaver에서 .db 파일을 새로고침해야 한다
- sqlalchemy 사용해 DB에 데이터 삽입시
_참고(SQLite 버전 3의 파일 잠금 및 동시성)
-아마 쓰기 캐시가 꽉 차서 그런 것 같다.