학습 목표 : 다양한 데이터 조회
- SQLite 기본 사용법
- Selete
- Where
- Tuple, Dictionary Mapping
SQLite의 데이터베이스를 활용하기 위해 기본적으로 작성하는 코드는 다음과 같다.
import sqlite3
# DB파일 조회(없으면 새로 생성)
conn = sqlite3.connect("D:/##Python_Basic/resource/database.db") # 본인 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())
순회해서 데이터를 읽어오는 방식 01 ( For문 활용 )
rows = c.fetchall()
for row in rows:
print("retriview1 >", row)
순회해서 데이터를 읽어오는 방식 02 ( For문 활용 ) - 더 많이 활용된다
for row in c.fetchall():
print("retriview2 >", row)
순회해서 데이터를 읽어오는 방식 03 ( For문 활용 )
# 순회3
for row in c.execute("SELECT * FROM users ORDER BY id desc"):
print("retriview3 >", row)
🔻 커서의 위치로 인해 두 코드를 연속해서 작성해도 두번 실행되지 않는다.
WHERE문을 활용하여 데이터 값 읽어오기 ( 3번 데이터 값은 하나이기 때문에 fetchall 문을 실행해도 이전에 불러왔기 때문에 빈 값으로 불러와 진다. )
param1 = (3, )
c.execute("SELECT * FROM users WHERE id = ?", param1)
print('param1', c.fetchone())
print("param1", c.fetchall())
%s를 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
param2 = 4
c.execute("SELECT * FROM users WHERE id='%s'" % param2) # %s - 문자열 / %f - float / %d 정수형
print("param2", c.fetchone())
print("param2", c.fetchall()) # 데이터 없음
Dictionary를 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
c.execute("SELECT * FROM users WHERE id=:Id", {"Id":5})
print("param3", c.fetchone())
print("param3", c.fetchall())
IN함수(합집합)을 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
param4 = (3, 5)
c.execute("SELECT * FROM users WHERE id IN(?,?)", param4)
print("param4", c.fetchall())
In함수를 활용하여 WHERE문을 작성하는 방법 2는 다음과 같다.( %d 활용 )
c.execute("SELECT * FROM users WHERE id IN('%d','%d')" %(3,4))
print("param5", c.fetchall())
OR문과 Dictionary를 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
c.execute("SELECT * FROM users WHERE id=:id1 OR id=:id2", {"id1":2, "id2":5})
print('param6', c.fetchall())
Dump문을 작성하여 Backup 데이터를 생성하는 코드는 다음과 같이 작성한다.
with conn:
with open('D:/##Python_Basic/resource/dump.sql','w') as f:
for line in conn.iterdump():
f.write('%s\n' % line)
print('Dump Print Complete')
# with문을 활용했기 때문에 f.close()와 conn.close() 함수가 출력되었다.
import sqlite3
# DB파일 조회(없으면 새로 생성)
conn = sqlite3.connect("D:/##Python_Basic/resource/database.db") # 본인 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())
rows = c.fetchall()
for row in rows:
print("retriview1 >", row)
for row in c.fetchall():
print("retriview2 >", row)
# 순회3
for row in c.execute("SELECT * FROM users ORDER BY id desc"):
print("retriview3 >", row)
param1 = (3, )
c.execute("SELECT * FROM users WHERE id = ?", param1)
print('param1', c.fetchone())
print("param1", c.fetchall())
param2 = 4
c.execute("SELECT * FROM users WHERE id='%s'" % param2) # %s - 문자열 / %f - float / %d 정수형
print("param2", c.fetchone())
print("param2", c.fetchall()) # 데이터 없음
c.execute("SELECT * FROM users WHERE id=:Id", {"Id":5})
print("param3", c.fetchone())
print("param3", c.fetchall())
IN함수(합집합)을 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
param4 = (3, 5)
c.execute("SELECT * FROM users WHERE id IN(?,?)", param4)
print("param4", c.fetchall())
In함수를 활용하여 WHERE문을 작성하는 방법 2는 다음과 같다.( %d 활용 )
c.execute("SELECT * FROM users WHERE id IN('%d','%d')" %(3,4))
print("param5", c.fetchall())
OR문과 Dictionary를 활용하여 WHERE문을 작성하는 방법은 다음과 같다.
c.execute("SELECT * FROM users WHERE id=:id1 OR id=:id2", {"id1":2, "id2":5})
print('param6', c.fetchall())
Dump문을 작성하여 Backup 데이터를 생성하는 코드는 다음과 같이 작성한다.
with conn:
with open('D:/##Python_Basic/resource/dump.sql','w') as f:
for line in conn.iterdump():
f.write('%s\n' % line)
print('Dump Print Complete')
# with문을 활용했기 때문에 f.close()와 conn.close() 함수가 출력되었다.
댓글 없음:
댓글 쓰기