본문 바로가기

DataBase

SQLite3

SQLite.ipynb
0.02MB

SQLite 를 이용하여 파이썬 데이터베이스 연동에 대한 학습이다.

 

테이블 생성 및 삽입

 

# DB생성 & Auto Commit:반영(Rollback:수정 전으로 되돌리기)
# auto commit 을 위한 isolation_level
conn = sqlite3.connect('./resource/database.db', isolation_level=None)

 

# Cursor
c = conn.cursor()
print('Cursor Type : ', type(c))

 

# 테이블 생성 (Data Type : TEXT, NEMERIC, 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)")

 

# 데이터 삽입
c.execute("INSERT INTO users VALUES(1, 'Kim', 'kim@naver.com',\
'010-0000-0000','kim.com', ?)", (nowDatetime,))

c.execute("INSERT INTO users(id, username, email, phone, website, regdate)\
VALUES(?,?,?,?,?,?)", (2, 'park', 'park@google.com','010-1111-1111','park.com',nowDatetime))

 

# Many 삽입 (튜플, 리스트)
userList = (
    (3, 'lee', 'lee@naver.com', '010-2222-2222', 'lee.com', nowDatetime),
    (4, 'kyn', 'kyn@nave.com', '010-2133-1324', 'kyn.com', nowDatetime),
    (5, 'yoo', 'yoo@google.com', '010-2303-3115', 'yoo.com', nowDatetime),
)

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

 

# 테이블 데이터 전체 삭제
# conn.execute("DELETE FROM users")
# 몇 개의 데이터가 삭제 되었는지 알 수 있는 방법
# print("user db deleted : ", conn.execute("DELETE FROM users").rowcount)

 

# Commit : isolation_level = None 일 경우 자동 반영(오토 커밋)
# conn.commit() : iso_level=None 하지 않을 경우 해당 구문 추가
# rollback : 데이터를 넣은 상태에서 취소하고 싶은 경우 삽입이 되어도 취소되어 조회되지 않음
# conn.rollback()

# resource 사용 후 파일을 닫아 접속 해제 해야한다.
conn.close()

 

# 데이터 조회(전체)
c.execute("SELECT * FROM users")

순회하며 테이블 내부의 정보에 대한 탐색방법 3가지

 

# 순회1
rows = c.fetchall()
# for row in rows:
#     print('retrieve1 > ', row)

# 순회2
# for row in c.fetchall():
#     print('retrieve2 > ', row)

# 순회3
# for row in c.execute('SELECT * FROM users ORDER BY id desc'):
#     print(row)

 

테이블 수정

 

# 데이터 수정1
c.execute("UPDATE users SET username = ? WHERE id = ?", ('niceman', 2))
conn.commit()

 

# 데이터 수정2
c.execute("UPDATE users SET username = :name WHERE id = :id", {'name' : 'goodman', 'id' : 5})
conn.commit()

 

# 데이터 수정3
c.execute("UPDATE users SET username = '%s' WHERE id = '%s'" %('badboy', 3))
conn.commit()

 

중간에 데이터 구성을 확인하는 과정

 

# 중간 데이터 확인1
for user in c.execute("SELECT * FROM users"):
    print(user)

 

데이터 삭제

 

# Row Delete1
c.execute("DELETE FROM users WHERE id = ?", (2,))
conn.commit()

 

# Row Delete2
c.execute("DELETE FROM users WHERE id = :id", {'id' : 5})
conn.commit()

 

# Row Delete1
c.execute("DELETE FROM users WHERE id = '%s'" % (4))
conn.commit()

 

앞서 다뤘던 전체 데이터 삭제

 

# 테이블 전체 데이터 삭제
print("users db deleted : ", conn.execute("DELETE FROM users").rowcount, "rows")
conn.commit()

 

Dump 출력 : 데이터베이스를 백업하고 다른 곳으로 이동하더라도 간단한 방법으로 데이터를 재구성 하는 방법

 

# Dump 출력 : 데이터베이스를 백업하고 다른 곳에서 재구성
# 해당 되는 부분을 dump.sql 이라는 파일에 썼기에 이 안에 테이블 생성부터 데이터 백업까지 한번에 실행가능한 코드를 주기 때문에
# 바로 다른 곳의 컴퓨터 생성하고자 할 때, 내부를 복사하여 SQL실행에 붙여넣고 실행하면 데이터가 붙는다.
with conn:
    with open('./resource/dump.sql', 'w') as f:
        for line in conn.iterdump():
            f.write('%s\n' % line)
        print('Dump Print Complete')