※ 강의를 듣고 제가 이해한 내용을 바탕으로 정리한 것이라서 오류가 있을 수 있습니다.

바로 이전 글에서 DB에 삽인한 데이터를 조회해 보고자 한다.
1. 데이터 한개만 조회
import sqlite3 # sqlite를 사용하기 위한 불러오기 # DB파일 연결 conn= sqlite3.connect('/Users/user/Documents/python_basic/resource/database.db') # 본인 DB 경로 # 커서 바인딩 c = conn.cursor() # Cursor: 데이터를 읽어오는 만큼 커서가 이동해서 읽어온 위치까지 기억하고 있다가 # 그 다음 데이터를 읽으면 또 이동 계속해서 읽다가 데이터가 # 끝나면 읽어올게 없기에 null 또는 none으로 표시 # users 테이블의 데이터를 조회 할 것을 선택 c.execute("SELECT *FROM users") # 커서 위치가 변경 # 1개 로우 선택 # c.fetchone()) # 지정 로우 선택 # c.fetchmany(size=3)) # 예시 3개 지정 # 전체 로우 선택 # c.fetchall()) # 한개만 조회 # 방법1 param1 = (1,) # 튜플 형식으로 변수를 만들어 SQL문에 사용해서 조회 c.execute('SELECT * FROM users WHERE id=?', param1) # id 1번 데이터만 선택 print('param1',c.fetchone()) # 출력 데이터 한개만 조회 할 것이기 때문에 fetchone을 써야한다. # 방법2 param2 = 2 #문자열 형식으로 변수를 만들어 SQL문에 사용해서 조회 c.execute('SELECT * FROM users WHERE id="%s"' % param2) # id 2번 데이터만 선택 print('param2',c.fetchone()) # 출력 # 방법3 c.execute('SELECT * FROM users WHERE id=:Id' ,{"Id": 3}) # id 3번 데이터만 선택, 딕셔너리 형식으로 SQL문 써서 조회 print('param3',c.fetchone()) # 출력
실행 결과

2. 데이터 여러개 조회
# 지정 로우 선택 # c.fetchmany(size=3)) # 예시 3개 지정 # 전체 로우 선택 # c.fetchall()) # 여러개 조회 # 방법1 param4 = (3,5) c.execute("SELECT * FROM users WHERE id IN(?,?)", param4) # 두개의 id 데이터를 조회하는 SQL문, 변수에 선언된 # id 3,5번 데이터가 ?,?에 매칭 된다. print('param4',c.fetchall()) # 출력, 여러개를 조회 하기 떄문에 fetchall()을 써야한다. # 방법2 c.execute("SELECT * FROM users WHERE id IN('%d','%d')" % (3,4)) # 이렇게 변수를 선언 하지 않고 SQL문에 직접 id를 넣어줘서 조회 할수도 # 있다. print('param5',c.fetchall()) # 방법3 c.execute("SELECT * FROM users WHERE id=:id1 OR id=:id2",{"id1": 2, "id2": 5}) # 딕셔너리 형식으로 SQL문을 써서 2개의 id를 조회 print('param6',c.fetchall())
실행 결과

3. 데이터 순회
import sqlite3 # sqlite를 사용하기 위한 불러오기 # DB파일 연결 conn= sqlite3.connect('/Users/user/Documents/python_basic/resource/database.db') # 본인 DB 경로 # 커서 바인딩 c = conn.cursor() # Cursor: 데이터를 읽어오는 만큼 커서가 이동해서 읽어온 위치까지 기억하고 있다가 # 그 다음 데이터를 읽으면 또 이동 계속해서 읽다가 데이터가 # 끝나면 읽어올게 없기에 null 또는 none으로 표시 # users 테이블의 데이터를 조회 할 것을 선택 c.execute("SELECT *FROM users") # 커서 위치가 변경 # 1개 로우 선택 # c.fetchone() # 지정 로우 선택 # c.fetchmany(size=3)) # 예시 3개 지정 # 전체 로우 선택 # c.fetchall() # 순회 조회 # 순회1 rows = c.fetchall() for row in rows: print('retrieve1 >', row) #순회2(변수로 SQL문을 선언 안하고 직접 for문에 선언) for row in c.execute('SELECT * FROM users ORDER BY id desc'): print('retrieve2 >', row)
실행 결과

'개발 공부한 내용 정리 > python' 카테고리의 다른 글
python DB- SQLite 연동, 테이블 생성, 데이터 삽입 (0) | 2020.07.23 |
---|---|
python- csv, 엑셀 파일 읽기 (0) | 2020.07.22 |
python- 파일 읽기, 쓰기 (0) | 2020.07.20 |
python- 모듈과 패키지 (0) | 2020.07.19 |
python- 클래스 (0) | 2020.07.15 |