-
Python과 SQLite3를 사용해 DB만들기💻 프로그래밍/Python 2017. 10. 25. 23:56
안녕하세요!! 코딩하는 JAY입니다.
오늘은 Python과 SQLite3를 사용하여 간단한 DB를 만들어 보겠습니다.
먼저 Python 가상환경에 접속한다음 SQLite 명령어로 DB를 생성합니다.
sqlite3 'DB이름'
DB가 제대로 생성되었으면 자신이 원하는 테이블 내용을 추가합니다. 테이블 추가는 SQL쿼리문을 찾아보시길 바랍니다.
(DB 생성 후, 테이블 내용 추가)
(제대로 생성된 DB와, 테이블 내용)
다음은 Python 으로 프로그램을 만들어 테이블에 값을 추가해보도록 하겠습니다.
저는 텍스트 파일을 읽어 DB에 값을 입력하도록 하였습니다.
(DB 테이블 형식에 맞게 텍스트파일에 데이터 저장)
일단, 텍스트 파일을 읽어 2차원 리스트로 저장하겠습니다.
코드를 보시면 첫번째로 read().splitlines() 함수를 이용해 전체적으로 읽은 파일의 내용을 line 단위로 쪼개 리스트로 저장합니다.12345678910111213141516f = open('dbText.txt', 'r')matrix =[[0]*3 for row in range(4)]tempFile = f.read().splitlines()print(tempFile)for i, tf in enumerate(tempFile):print(str(i) + ': ' + tf)for j, saveFile in enumerate(tf.split()):matrix[i][j] = saveFileprint(str(j) + ': ' + saveFile)print(matrix)f.close()두번째로는 line으로 쪼개진 내용의 리스트를 split() 함수로 다시한번 쪼갠다음 2차원 리스트에 저장해줍니다.
2차원 리스트에 값을 저장했으면 이제 DB에 값을 저장하는 함수를 만들어 보겠습니다
saveDBtable(db, data)
123456789def saveDBtable(db, data) :conn = sqlite3.connect(db)cur = conn.cursor()sql = "insert into customer(name,category,region) values (?, ?, ?)"cur.executemany(sql, data)conn.commit() # 트랜젝션의 내용을 DB에 반영함conn.close()여기까지만 하면 DB를 만들고 데이터를 저장하는 것은 끝입니다. 추가로 DB를 읽어 출력해보는 함수도 만들어 보겠습니다.
viewDBdata(db, table)
123456789101112131415161718def viewDBdata(db, table) :#SQLite DB 연결conn = sqlite3.connect(db)# Connection 으로부터 Cursor 생성cur = conn.cursor()# SQL 쿼리 실행query = "select * from {0}".format(table)cur.execute(query)# 데이타 Fetchrows = cur.fetchall() # 모든 데이터를 한번에 클라이언트로 가져옴for row in rows :print(row)# Connection 닫기cur.close()DB에 값이 정말 제대로 저장되었는지 확인해보도록 하겠습니다.
확인결과 DB에 제대로 값이 저장되었습니다. (참 쉽쥬~??!!:D)
아래는 전체 Python코드입니다.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import sqlite3def viewDBdata(db, table) :#SQLite DB 연결conn = sqlite3.connect(db)# Connection 으로부터 Cursor 생성cur = conn.cursor()# SQL 쿼리 실행query = "select * from {0}".format(table)cur.execute(query)# 데이타 Fetchrows = cur.fetchall() # 모든 데이터를 한번에 클라이언트로 가져옴for row in rows :print(row)# Connection 닫기cur.close()def saveDBtable(db, data) :conn = sqlite3.connect(db)cur = conn.cursor()sql = "insert into customer(name,category,region) values (?, ?, ?)"cur.executemany(sql, data)conn.commit() # 트랜젝션의 내용을 DB에 반영함conn.close()if __name__ == '__main__':f = open('dbText.txt', 'r')#matrix = [[0 for col in range(10)] for row in range(10)]matrix =[[0]*3 for row in range(4)]tempFile = f.read().splitlines()for i, tf in enumerate(tempFile):for j, saveFile in enumerate(tf.split()):matrix[i][j] = saveFilef.close()# DB에 테이블 입력saveDBtable('testDB.db', matrix)# DB에 저장되어 있는 테이블값 출력viewDBdata('testDB.db', 'customer')이상으로 오늘의 포스팅을 마치도록 하겠습니다.!! 모두 즐거운 코딩하세요!:D
'💻 프로그래밍 > Python' 카테고리의 다른 글
[BitBar] 오픈소스 플러그인 내맘대로 만들어보기 (Mac OS 메뉴바 플러그인) (0) 2020.06.14 [Python]메타클래스 & 인스턴스, 클래스, 스태틱 메소드 개념 정리 (2) 2018.04.30 우분투에서 python 가상환경(venv) 설치 안될 경우 (1) 2018.01.09 BeautifulSoup로 웹 크롤링 하기 (1) 2017.10.29 [Python]웹환경에서의 글로벌 변수(global value) 사용 (1) 2017.09.17