티스토리 뷰

SQLiteDatabaseBrowserPortable 사용

 

테이블 생성 및 삽입

 

 

# DB 생성 & auto commit

# isolation_level = None : auto commit 설정 commit() 함수 실행 없이 자동으로 commit 되도록

conn = sqlite3.connect('C:/Users/jihee/FASTCAMPUS/python_basic/resource/database.db', isolation_level = None)

 

# 커서의 위치 획득

c = conn.cursor()

 

# 테이블 생성 (Data Type : 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

# 변수 값을 집어넣을 때 (nowDatetime) 물음표로 써놓고 두번째 매개변수에서 튜플 형태로 변수 지정. 
반드시 튜플에 하나만 있는 경우에 콤마를 뒤에 붙여야 한다.

c.execute("INSERT INTO users VALUES(1, 'kim', 'kim@naver.com', '010-1234-5678', 'kim.com', ?)", (nowDatetime,))

 

# 데이터 삽입 2

# VAULES ( ? * 변수 개수 ) , ( 변수에 해당하는 값들 )

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

 

# 한 번에 대용량 삽입 (튜플, 리스트 삽입)

userList = (

(3, 'lee', 'lee@naver.com', '010-1111-2222', 'lee.com', nowDatetime),

(4, 'cho', 'cho@naver.com', '010-2222-3333', 'cho.com', nowDatetime),

(5, 'choi', 'choi@naver.com', '010-3333-4444', 'choi.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)

 

# rollback

#conn.rollback()

 

# 접속 해제

conn.close()

 


# DB 파일 조회 없으면 새로 생성

conn = sqlite3.connect ("C:/Users/jihee/FASTCAMPUS/python_basic/resource/database.db")

 

# 데이터 조회

c.execute("SELECT * FROM users")

 

# 커서 위치가 변경

# 1개 로우 선택

#print("One - > \n", c.fetchone())

 

# 지정 로우 선택

#print("three - > \n", c.fetchmany(size=3))

 

# 전체 로우 선택

#print("all - > \n", c.fetchall())



# 순회하는 방법

rows = c.fetchall()

for row in rows:

    print(row)

 

for row in c.fetchall():

    print(row)

 

for row in c.execute("SELECT * FROM users ORDER BY id"):

    print(row)

 

 

# WHERE Retrieve 조건

param1 = (3, )

c.execute("SELECT * FROM users WHERE id=?", param1)

print(c.fetchone())

print(c.fetchall())

 

param2 = 4

c.execute("SELECT * FROM users WHERE id='%s'" % param2)

print(c.fetchone())

 

c.execute("SELECT * FROM users WHERE id=:Id",{"Id":1})

print(c.fetchone())

 

param4 = (3, 5)

c.execute("SELECT * FROM users WHERE id IN(?, ?)", param4)

print(c.fetchmany(len(param4)))

 

c.execute("SELECT * FROM users WHERE id =:id1 OR id =:id2", {"id1":2, "id2":5})

print(c.fetchall())

 

# Dumps : SQLite 백업

with conn:

    with open("C:/Users/jihee/FASTCAMPUS/python_basic/resource/dump.sql", "w") as f:

        for line in conn.iterdump():

            f.write("%s\n" % line)

            print("Dump Print Complet")


 

# DB 생성 (파일)

conn = sqlite3.connect("C:/Users/jihee/FASTCAMPUS/python_basic/resource/database.db")

 

c = conn.cursor()

 

# 데이터 수정

c.execute("UPDATE users SET username = ? WHERE id = ?", ('niceman', 2))

c.execute("UPDATE users SET username = :name WHERE id = :id", {'name':'goodman', "id":5})

c.execute("UPDATE users SET username = '%s' WHERE id = '%s'" %('badboy', 3))

 

conn.commit()

 

# 중간 데이터 확인

for user in c.execute("SELECT * FROM users"):

    print(user)



# 데이터 삭제

c.execute("DELETE FROM users WHERE id = ?", (2,))

c.execute("DELETE FROM users WHERE id = :id", {"id":5})

c.execute("DELETE FROM users WHERE id = '%s'"% (4))

 

# 전체 데이터 삭제

print("user db deleted : ", conn.execute("DELETE FROM users").rowcount)

conn.commit()

 

conn.close()

 

댓글