프로젝트 및 실습/Django

[Django] Python에서 Django DB 사용하기

jooona 2021. 1. 23. 12:35
반응형

이번 글에서는 파이썬을 사용해서 Django의 SQLite3 DB에 접근하고 또 사용하는 방법을 알아보도록 하겠습니다.

 

저는 Pycharm을 이용해 실행해 보았습니다.

 

우선 파이썬 파일에 sqlite3을 import 해줍니다.

import sqlite3

그리고 자신이 만든 프로젝트의 DB가 존재하는 경로를 가지고 옵니다.

다음과 같은 코드를 통해 DB와 연결을 시켜줍니다.

conn = sqlite3.connect('C:/Users/R/django/firstsite/db.sqlite3')
c = conn.cursor()

물론 경로 부분에는 본인의 프로젝트에 맞는 경로를 작성하셔야 합니다. 그리고 주의하셔야 할 점은 경로를 작성할 때 \가 아닌 /로 바꾸어 작성을 하셔야 합니다. 그렇지 않으시면 syntex error가 발생하게 됩니다.

 

자 이제 SQL문을 통해 DB를 사용해보도록 하겠습니다. 

c.execute("CREATE TABLE test_table ( name CHAR(7), age INT )")

위의 SQL문을 통해 db.sqlite3에 name과 age라는 개체 타입을 가지는 test_table이라는 테이블을 만들 수 있습니다. 만들어졌는지를 확인하기 위해 DB Browser를 통해 db.sqlite3 파일에 들어가 보도록 하겠습니다.

 

데이터 보기 탭에서 테이블을 test_table로 선택해보면 table이 잘 만들어져 있는 것을 확인할 수 있습니다.

 

이번에는 데이터를 한번 넣어보겠습니다.

c.execute("INSERT INTO test_table VALUES ( 'JunhaLee', 26 )")
conn.commit()

insert into 구문을 통해 test_tabel에 이름과 나이를 넣어주었습니다. 여기서 중요한 것은, 테이블을 수정하기 위해서는 마지막에 conn.commit()을 해주어야 DB가 업데이트됩니다. 해당 구문이 없다면 DB에는 아무 일도 일어나지 않게 됩니다.

 

이번에도 잘 들어간 것을 확인하실 수 있습니다.

 

c.execute("INSERT INTO test_table VALUES ( 'JunhaLee', 26 )")
c.execute("INSERT INTO test_table VALUES ( 'John', 50 )")
c.execute("INSERT INTO test_table VALUES ( 'Smith', 32 )")
c.execute("INSERT INTO test_table VALUES ( 'Brady', 45 )")
c.execute("DELETE FROM test_table WHERE name = 'Smith'")
conn.commit()

여러 개의 구문도 잘 돌아가는 것을 확인하실 수 있습니다.

 

마지막으로 select를 통해 Pycharm에서 DB의 테이블을 확인해보도록 하겠습니다. 

c.execute("SELECT * FROM test_table")
rows = c.fetchall()
for row in rows:
    print(row)

fetchall() 함수는 말 그대로 fetch all을 뜻하며 테이블의 모든 데이터를 가져올 때 사용합니다. 하나씩 가져오고 싶다면 fetchall() 대신에 fetchone(), n 개의 데이터를 가져오고 싶다면 fetchmany(n)를 사용할 수 있습니다. 

 

역시 잘 실행되는 것을 볼 수 있습니다.

 

추가적으로 혹시 아래와 같이 database is locked라는 오류가 날 때는 DB Browser를 껐다 켜거나 그래도 안되면 컴퓨터를 재부팅하시면 정상적으로 실행이 됩니다. 보통 DB browser에서 직접 데이터를 고치고 저장을 하지 않은 상태에서 코드를 실행하면 발생하게 됩니다.

 

반응형