# Section12-2 # 파이썬 데이터베이스 연동(SQLite) # 테이블 조회 import sqlite3 # DB 파일 조회(없으면 새로 생성) # conn = sqlite3.connect('본인이 원하는 경로/database.db/database.db') conn = sqlite3.connect('D:/python_bnasic/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()) print() # 순회 1,2,3 실행하는 구문말곤 주석 처리 해야한다. # 순회1 rows = c.fetchall() for row in rows: print('retrieve1 >', 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) print() # WHERE Retrieve1 param1 = (1,) c.execute('SELECT * FROM users WHERE id=?', param1) print('param1', c.fetchone()) print('param1', c.fetchall()) # WHERE Retrieve2 param2 = 1 c.execute("SELECT * FROM users WHERE id='%s'" % param2) # %s %d %f print('param2', c.fetchone()) print('param2', c.fetchall()) # WHERE Retrieve3 c.execute("SELECT * FROM users WHERE id= :Id", {"Id": 1}) print('param3', c.fetchone()) print('param3', c.fetchall()) # WHERE Retrieve4 param4 = (1, 4) 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')" % (1, 4)) print('param5', c.fetchall()) # WHERE Retrieve6 c.execute("SELECT * FROM users WHERE id= :id1 OR id= :id2", {"id1": 1, "id2": 4}) print('param6', c.fetchall()) with conn: # Dump 출력(데이터베이스 백업 시 중요) # with open('본인이 원하는 경로/dump.sql', 'w') as f: with open('D:/python_bnasic/resource/dump.sql', 'w') as f: for line in conn.iterdump(): f.write('%s\n' % line) print('Dump Print Complete.')
One -> (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31') Three -> [(2, 'Park', 'Park@naver.com', '010-1111-1111', 'Park.com', '2020-06-26 22:47:31'), (3, 'Lee', 'Lee@naver.com', '010-2222-2222', 'Lee.com', '2020-06-26 22:47:31'), (4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', '2020-06-26 22:47:31')] All -> [(5, 'Yoo', 'Yoo@naver.com', '010-4444-4444', 'Yoo.com', '2020-06-26 22:47:31')] retrieve3 > (5, 'Yoo', 'Yoo@naver.com', '010-4444-4444', 'Yoo.com', '2020-06-26 22:47:31') retrieve3 > (4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', '2020-06-26 22:47:31') retrieve3 > (3, 'Lee', 'Lee@naver.com', '010-2222-2222', 'Lee.com', '2020-06-26 22:47:31') retrieve3 > (2, 'Park', 'Park@naver.com', '010-1111-1111', 'Park.com', '2020-06-26 22:47:31') retrieve3 > (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31') param1 (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31') param1 [] param2 (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31') param2 [] param3 (1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31') param3 [] param4 [(1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31'), (4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', '2020-06-26 22:47:31')] param5 [(1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31'), (4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', '2020-06-26 22:47:31')] param6 [(1, 'Kim', 'Kim@naver.com', '010-0000-0000', 'Kim.com', '2020-06-26 22:47:31'), (4, 'Cho', 'Cho@naver.com', '010-3333-3333', 'Cho.com', '2020-06-26 22:47:31')] Dump Print Complete.