2020년 5월 26일 화요일

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

학습 목표 : 다양한 데이터 조회

  • 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 = (35)
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() 함수가 출력되었다.

댓글 없음:

댓글 쓰기