Python + SQLite

ljho01·2022년 8월 12일
0

인공지능트랙

목록 보기
5/6

파이썬에서 SQLite 사용하기

골자는 파이썬에서 라이브러리를 사용하여 sql문을 사용하는 것이다. 이를 위해서 cursor라는 오브젝트를 만들어서 사용한다.
sql문과 파이썬 sqlite3를 같이 배운다고 생각하자.

import sqlite3

dbpath = "파일명.db" # db파일 경로 
conn = sqlite3.connect(dbpath) # db파일 연결하기

cur = conn.cursor() # db파일에 대한 커서 생성

conn.commit()  # 커밋하기
conn.rollback()  # 마지막 커밋 시점으로 롤백
conn.close()  # 저장하고 끝내기

SQLite3의 자료형들

  • NULL
  • INTEGER, INT #정수
  • REAL #실수(float)
  • TEXT(or VARCHAR)
  • BLOB #binary large object 2진수 오브젝트
  • TIMESTAMP
    ...

cursor 사용하기

SQL문 커서로 실행하기(excute, excutescript)

테이블 만들기(CREATE)

cur.execute("""
	CREATE TABLE employees(
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    salary REAL,
    ...
    );
    """)  # sql문 스트링으로 전달.

단일 sql문을 전달할 경우 세미콜론은 넣지 않아도 된다.
execute()는 단일 sql만 실행한다. 여러개 실행하려면 executescript()를 써야한다.

테이블 확장(key 생성)

테이블과 열

DROP TABLE IF EXIST employees; employees가 있으면 지우기
id INTEGER PRIMARY KEY AUTOINCREMENT, 자동으로 증가하는 키인 id 만들기
job TEXT NOT NULL, NULL을 허용하지 않음

테이블에 데이터 주입(INSERT)

INSERT INTO 테이블(필드1, 필드2, 필드3, ...) VALUES(필드1, 필드2, 필드3, ...);
모든 필드에 데이터를 채울 경우 테이블(필드1, 필드2, 필드3, ...)의 괄호 부분은 생략해도 된다.

데이터 읽기(SELECT, fetchall)

row를 불러오려면(데이터)

cur.excecute("SELECT * FROM employees")
cur.fetchall()  # fetchone()도 가능

더 쉬운 방법 - pandas 사용하기

import pandas as pd
df = pd.read_sql_query("SELECT * FROM employees;", conn) 

커서를 거치지 않고 데이터를 뽑아야하니 conn라도 던져줘야한다.

column을 불러오려면(테이블의 key값)

[col[0] for col in cur.description]  -->  ['id', 'name', ...]

을 이용하면 된다.
cur.description은 그냥 출력하면 null이 덕지덕지 나오는데 python db api에 맞추느라 그렇게 된다고 한다..

데이터 한번에 넣기(INSERT, executemany)

excute를 for문 돌리기엔 조금 더럽다. excutemany를 사용하면 알아서 여러번 넣어준다.

cur.executemany("INSERT INTO 테이블(필드1, 필드2, 필드3, ...) VALUES(?, ?, ?, ...);", data)
데이터의 형식은 [(value, value, value),(),()] 요런식

db 저장하고 끝내기(conn.close())

용도에 따라 conn.commit(), conn.rollback()를 사용해주고 conn.close() 해주면 db파일이 저장된다.

SQLite 파이썬 없이 db다루기

https://sqlitebrowser.org/ 요기서 브라우저를 받아 사용할 수도 있다.

0개의 댓글