2020년 5월 20일 수요일

12. 파이썬 데이터베이스 연동

학습목표 : 데이터베이스 및 테이블 생성


  • SQLite 기본 사용법
  • 테이블 생성
  • 데이터 삽입
  • 기본 SQL 사용 예제

sqlite 불러오기와 본인의 버전 확인 방법은 다음과 같다.


import sqlite3

# sqlite3
print("sqlite3.version : ", sqlite3.version)
print("sqlite3.sqlite_version : ", sqlite3.sqlite_version)

파이썬을 통해 현재시간을 가져오는 코드는 다음과 같이 작성한다.
import sqlite3
import datetime

# 삽입 날짜 생성
now = datetime.datetime.now()
print("now : ", now)

nowDatetime = now.strftime("%Y-%m-%d %H:%M:%S")
print("nowDatetime : ", nowDatetime)

데이터베이스를 생성하기 위해서는 다음과 같이 코드를 작성한다. 그러나 자동으로 연동되기 위해서는 추가적으로 [ isolation_level=None ]을 기입한다.
# DB 생성 & Auto Commit (Rollback)
conn = sqlite3.connect("D:/##Python_Basic/resource/database.db"isolation_level=None)

다음으로 데이터를 작성하기 위해서 커서를 불러온다. 불러오는 코드는 다음과 같이 작성한다.
c = conn.cursor()
print("Cusor Type : "type(c))

테이블에 들어가는 데이터 타입은 다음과 같다.
  • text ( 문자열을 표현한다. )
  • NUMERIC( 소수점까지 표현한다. )
  • INTEGER ( 정수를 표현한다. )
  • REAL ( 소수점까지 표현한다. )
  • BLOB
테이블 생성시 코드는 다음과 같이 작성을 한다. ( [ | ] 역슬레시는 코드작성이 길어졌을 경우 아래열까지 코드가 이어서 쓸 수 있도록 해준다.
c.execute("CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, username text,\
     email text, phone text, website text, regdate text)")



🔻테이블 생성시 코드에 오타가 났을 경우 다음과 같은 순서로 오류가 나타나지 않도록 수정한다.

  • 1. 데이터베이스 자료를 닫는다.

  • 2. 파이썬에서 db파일을 삭제한다.

  • 3. 파이썬에서 코드를 재 실행한다.
  • 4. 데이터베이스를 다시 불러온다.

테이블에 데이터를 삽입은 다음과 같이 코드를 작성한다.
# 데이터 삽입
c.execute("INSERT INTO user VALUES(1, 'Koo', 'Koo@naver.com', '010-0000-0000',\
    'Koo.com, ?')", (nowDatetime, ))

🔻 [ ? ] 로 마지막 코드를 작성한 이유는 모든 코드들이 다 문자열로 이루어져있다. 그러나 현재시간의 경우에는 숫자로 구성되어 있으며 클래스의 값을 불러오는 것이기 때문에 다음과 같이 작성을 한다.

🔻 위에서 선언한 [ PREMIRE KEY를 선언함으로 중복을 허용하지 않기 때문에 이전에 선언한 데이터 값은 주석처리를 해줘야한다.
# c.execute("INSERT INTO users VALUES(1, 'Koo', 'Koo@naver.com', '010-0000-0000',\
    # 'Koo.com', ?)", (nowDatetime, ))


데이터 삽입 코드는 다음과 같은 방식으로도 작성한다. (튜플 형식)
c.execute("INSERT INTO users(id, username, email, phone, website, regdate) \
    VALUES (?,?,?,?,?,?)",\
    (2'Park''Park@daum.net''010-1111-1111''park.com', nowDatetime))

한번에 다양한 데이터를 입력할 경우에는 [ excutemany ] 코드로 작성하며 그 코드작성법은 다음과 같다.
userList = (
    (3'Lee''Lee@naver.com''010-2222-2222''Lee.com', nowDatetime),
    (4'Cho''Cho@naver.com''010-3333-3333''Cho.com', nowDatetime),
    (5'Yoo''Yoo@daum.net''010-4444-4444''Yoo.com', nowDatetime)
)

c.executemany("INSERT INTO users(id, username, email, phone, website, regdate) \
    VALUES (?,?,?,?,?,?)", userList)

테이블에 작성되어 있는 데이터 전체 삭제는 다음과 같이 코드를 작성한다.
# 테이블 데이터 삭제
conn.execute("DELETE FROM users")

삭제된 데이터의 갯수를 확인하는 코드는 다음과 같이 작성한다.
print("users db deleted : ", conn.execute("DELETE FROM users").rowcount)

db 프로그램과 연동하기 위해서는 다음과 같은 코드를 작성하며 코드를 작성한 위치에 따라 데이터 연동의 유무가 결정된다.
conn.commit()

db 프로그램과 연동을 취소하기 위해서는 다음과 같은 코드를 작성한다.
conn.rollback()

반드시 db 프로그램과 연동이 됬다면 [ close ] 코드를 통해 닫아줘야한다.
conn.close()


댓글 없음:

댓글 쓰기