머신러닝 및 딥러닝/SQL

파이썬에서 SQLite 사용하기 (연결, 데이블 생성, 데이터 입력, 데이터 조회)

삡삐in오즈 2023. 2. 14. 10:28
728x90
반응형

 

 

SQLite란?

SQLite는 MySQL나 PostgreSQL와 같은 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다.
참고 : http://ko.wikipedia.org/wiki/SQLite

별도의 설치 필요 없이 파이썬에서는 SQLite 데이터베이스와 연결가능한 sqlite3 내장 모듈이 포함되어 있습니다.

이번 글에서는 sqlite3 모듈의 기본 사용법을 정리해 보겠습니다.

 

 



sqlite3 사용법

 

1. SQLite 데이터베이스에 연결하기

  • sqlite3 모듈을 불러오기
import sqlite3

 

  • 데이터베이스와 연결하기 위해서 connect() 메서드를 사용합니다. 
    • 괄호 안에 연결하고픈 파일 이름을 넣어줍니다. 존재하지 않는 이름을 넣어주면 그 이름으로 새로운 파일이 생성됩니다.
    • 이 파일은 파이썬 파일과 같은 폴더에 생성됩니다. 원하는 파일 경로를 괄호 안에 따로 넣는 것도 가능합니다. (e.g. ./test.db)
connection = sqlite3.connect('test.db')

 

  • 쿼리문을 실행시키려면 커서 cursor 객체를 통해 연결을 해야 합니다. 아래와 같이 커서 객체를 생성해주어야 합니다.
cursor = connection.cursor()


('connection' → 'con', 'cursor' → 'cur' 같은 원하는 짧은 이름으로 대체 가능!)

 

 

  • 마지막에 연결 닫기
connection.close()





2. 테이블 생성하기

데이터베이스와 연결하고 커서 객체를 생성한 후, execute() 메서드로 쿼리를 전송할 수 있습니다.
괄호 안에 쿼리문을 넣어 실행 가능합니다. 아래 예제에서는 sql_command라는 변수를 따로 생성해서 넣어주었습니다.

 

import sqlite3

connection = sqlite3.connect("test.db")
cursor = connection.cursor()

sql_command = """
CREATE TABLE customer (
    CustomerID int,
    LastName varchar(255),
    FirstName varchar(255))
"""

cursor.execute(sql_command)

connection.close()






3. 테이블에 데이터 입력하기

데이터 입력 역시 execute() 함수를 사용하여 실행해줄 수 있습니다.
데이터베이스에 INSERT 쿼리문으로 데이터를 입력할 경우 이 변화를 저장하려면 커밋을 해야 합니다.

commit() 메서드를 통해 데이터를 저장해 줍니다.

 

import sqlite3

connection = sqlite3.connect("test.db")
cursor = connection.cursor()

cursor.execute("INSERT INTO customer VALUES(2, 'Williams', 'Ellie')")
cursor.execute("INSERT INTO customer VALUES(1, 'Miller', 'Joel')")

# 체인지 커밋
connection.commit()

connection.close()






4. 데이터 조회하기

SELECT 문 ("SELECT * FROM 테이블_이름" )을 실행하여 테이블 내 데이터를 조회할 수 있습니다. 

fetchall()는 쿼리문 결과물의 모든 열을 반환해 주는 함수입니다. 이때 결과물은 리스트 형식이며 각 열은 튜플 형식으로 봔환 됩니다.

 

import sqlite3

connection = sqlite3.connect("test.db")
cursor = connection.cursor()

cursor.execute("SELECT * FROM customer")

ans = cursor.fetchall() # 조회한 데이터를 ans 변수에 저장하기

print(ans)

for i in ans:
    print(i)

output:

 

 

 

+ DB Browser for SQLite로 test.db를 열어본모습입니다. 

 

 

728x90
반응형