SK shieldus Rookies 16기 (인프라 활용을 위한 파이썬 #07)

만두다섯개·2023년 11월 1일
0

SK 루키즈 16기

목록 보기
6/59
post-thumbnail

주요 정보

  • 교육 과정명 : 클라우드기반 스마트융합보안 과정 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 사용 실습

from PIL import Image
img = Image.open('test_image\\apple_jacks.jpg') #test-image 파일 내부 사진이 있다. 
print(type(img))
img.show() #이미지 출력
img # VSC에서도 출력 가능
print(img.format, img.size, img.mode) # 이미지 정보 출력
# crop : 이미지 자르기
img = Image.open('test_image\\apple_jacks.jpg') #test-image 파일 내부 사진이 있다. 만약 안된다면 getcwd, chdir 사용
box = (100,100,400,400) # left, upper, right, low 이동 후, 해당 부분만 잘라낸다
region = img.crop(box)
region.show()

출력

DB 기초

DB 실습

  • sqlite3 설치 및 CMD 창에서 sqlite3 명령어로 접속(환경변수 설정 또는 해당 실행 파일 위치에서 실행)
  • CMD 창에서 sqlite 접속 어렵다면, DB브라우저 사용해 접속 가능
  1. SQLite, DB 브라우저 프로그램설치
  2. DB 브라우저에 SQLite로 생성한 DB(아이콘)을 끌어다 넣는다.
  3. 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 메소드 사용시,
  1. SQL 문법 사용 -> 트랜잭션처리로 DB 바로 반영
  2. 명령어로 넣기 -> 요청 메모리 일시저장. 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의 파일 잠금 및 동시성)
    -아마 쓰기 캐시가 꽉 차서 그런 것 같다.
profile
磨斧爲針

0개의 댓글