반응형
# 데이터베이스 및 테이블 생성
# 테이블 생성 및 삽입
import sqlite3
import datetime
#삽입 날짜 생성
now = datetime.datetime.now()
print(now)
# 날짜를 스트링으로 변환
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(nowDatetime)
#sqlite3
print(sqlite3.version)
print(sqlite3.sqlite_version)
# DB 생성 & Auto commit(Rollback)
conn = sqlite3.connect('./resource/database.db',isolation_level=None)
# cursor
c = conn.cursor()
print('Cursor Type : ',type(c))
# 테이블 생성(Datatype : 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)")
# 데이터 삽입
#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@daum.net','010-1111-1111','Park.com',nowDatetime))
# Many 삽입(튜플, 리스트) # 한번에 많은 데이터 삽입
userList = (
(3,'Lee','Lee@naver.com','010-2222-2222','Lee.com',nowDatetime),
(4,'Cho','Cho@daum.net','010-3333-3333','Cho.com',nowDatetime),
(5,'Yoo','Yoo@naver.com','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) # 몇개의 데이터 지워졌는지 확인
# 커밋 : isolation_level = None 일 경우 자동 반영(오토 커밋)
#conn.commit()
#rollback
#conn.rollback()
# 접속 해제
conn.close()
# 테이블 조회, 조건 조회
# 테이블 조회
import sqlite3
# DB 파일 조회(없으면 새로 생성)
conn = sqlite3.connect('./resource/database.db')
#커서 바인딩
c = conn.cursor()
# 데이터 조회(전체)
c.execute('SELECT * FROM users')
# 커서 위치가 변경
#1개 로우 선택
#print('One -> \n', c.fetchone())
# 지정 로우 선택
#print("Three -> \n", c.fetchmany(size=3))
# 전체 로우 선택
#print('All -> \n', c.fetchall())
print()
# 순회1
# rows = c.fetchall()
# for row in rows:
# print('retrieve >',row)
# 순회2
# for row in c.fetchall():
# print('retrieve2 > ',row)
# 순회3
# for row in c.execute('SELECT * FROM users ORDER BY id desc'):
# print('retrieve3 > ',row)
# WHERE Retrieve1
param1=(3,)
c.execute('SELECT * FROM users WHERE id=?',param1)
print('param1',c.fetchone())
print('param1',c.fetchall()) # 데이터 없음
# WHERE Retrieve2
param2=4
c.execute('SELECT * FROM users WHERE id="%s"'% param1)
print('param2',c.fetchone())
print('param2',c.fetchall()) # 데이터 없음
# WHERE Retrieve3
c.execute('SELECT * FROM users WHERE id=Id',{"Id" : 5})
print('param3',c.fetchone())
print('param3',c.fetchall()) # 데이터 없음
# WHERE Retrieve4
param4=(3,5)
c.execute('SELECT * FROM users WHERE id In (?,?)',param4)
print('param4',c.fetchall())
# WHERE Retrieve5
c.execute('SELECT * FROM users WHERE id In ("%d","%d")'% (3,4))
print('param5',c.fetchall())
# WHERE Retrieve5
c.execute('SELECT * FROM users WHERE id=:id1 OR id =:id2',{"id1":2,"id2":5})
print('param6',c.fetchall())
# Dump 출력
# Dump : 데이터베이스에 저장된 테이블 등의 정보를 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')
# f.close(), conn.close()
# 테이블 데이터 수정, 삭제
# 테이블 데이터 수정 및 삭제
import sqlite3
# DB 생성(파일)
conn = sqlite3.connect('./resource/database.db')
# Cursor 연결
c = conn.cursor()
# 데이터 수정1
#c.execute('UPDATE users SET username = ? WHERE id = ?',('niceman',2))
# 데이터 수정2
#c.execute('UPDATE users SET username = :name WHERE id = :id',{'name':'goodman',"id" : 5})
# 데이터 수정3
#c.execute('UPDATE users SET username = "%s" WHERE id = "%s"' % ('badboy',3))
#중간 데이터 확인1
for user in c.execute("SELECT * from users"):
print(user)
# Row Delete1
#c.execute("DELETE FROM users WHERE id =?",(2,))
# Row Delete2
#c.execute("DELETE FROM users WHERE id =:id",{"id":5})
# Row Delete3
c.execute("DELETE FROM users WHERE id ='%s'" % 4)
print()
#중간 데이터 확인2
for user in c.execute("SELECT * from users"):
print(user)
# 테이블 전체 데이터 삭제
print("users db deleted : ", conn.execute("DELETE FROM users").rowcount,"rows")
# 커밋
conn.commit() # 커밋 해야 바뀜
# 접속 해제
conn.close()
반응형
'Algorithm > 자료구조, 알고리즘' 카테고리의 다른 글
| [코딩 + 알고리즘 완주반] 11일차. Object Reference (0) | 2021.03.25 |
|---|---|
| [코딩 + 알고리즘 완주반] 10일차. 타이핑 게임 프로젝트 (0) | 2021.03.25 |
| [코딩 알고리즘 완주반] 8일차. 파이썬 외부 파일 처리 ( Excel, CSV 파일) (0) | 2021.03.22 |
| [코딩 + 알고리즘 완주반] 8일차. 예외 처리 (0) | 2021.03.22 |
| [코딩 + 알고리즘 완주반] 8일차. 파일 읽기, 쓰기 (0) | 2021.03.22 |