Django에서 DB(SQLite3)에 접근하는 방법은 여러가지가 있는데,
그중 하나는 https://userdonghu.tistory.com/entry/Django-%EC%8B%A4%EC%8A%B545-ORM-CRUD
와 같이 ORM을 이용해서 접근하는 방법이고, 또 직접 SQL 쿼리를 실행해서 접근하는 방법도 있다.
django.db.connections 를 이용해서 데이터베이스 커넥션을 가져온 후, cursor() 메소드를 호출해서 SQL쿼리를 실행할 수 있다.
import sqlite3
conn = sqlite3.connect('ex1.db') # db파일에 연결
c = conn.cursor()
c.execute('''
CREATE TABLE books (id integer, title text, price integer) # books라는 테이블 생성
''')
c.execute('''
INSERT INTO books VALUES (1, 'python가이드', 5000) # 테이블에 데이터 삽입
''')
c.execute('''
INSERT INTO books VALUES (2, 'js가이드', 5000) # 삽입
''')
conn.commit() # 저장
conn.close() # 종료
db 보는법
conn = sqlite3.connect('ex1.db')
c = conn.cursor()
# 데이터 조회
for row in c.execute('SELECT * FROM books ORDER BY id'): # 아이디로 정렬
print(row)
# 연결 종료
conn.close()
python manage.py shell 을 통해서 DB에 접근할수도 있다.
>> from django.db import connection
>> cursor = connection.cursor()
>> cursor.execute("SELECT * FROM blog_post")# 블로그앱의 post라는 모델 선택
>> rows = cursor.fetchall() # fetchall로 읽음
>> for row in rows:
>> print(row)
>> cursor.close() # 사용 다했으면 닫기
Create
cursor.execute("""
INSERT INTO blog_post
(title, content, head_image, file_upload, created_at, updated_at)
VALUES
('4', '44', '', '', '2023-10-22 05:27:42.857132', '2023-10-22')
""")
Read
cursor.execute("SELECT * FROM blog_post")
rows = cursor.fetchall()
for row in rows:
print(row)
Update
cursor.execute("UPDATE blog_post SET title='수정된 제목 1' WHERE id=1")
Delete
cursor.execute("DELETE FROM blog_post WHERE id=2")
DB를 파일 형태로 추출 dumpdata
output.json으로 추출되어 저장됨.
python manage.py dumpdata app_name.ModelName --indent 2 > output.json # ex) blog.post
python manage.py dumpdata blog.post --indent 4 > output.json # 이렇게 하면 admin정보까지 다 뽑힘
외부 파일을 DB에 채우기 loaddata
python manage.py loaddata output.json
'Django' 카테고리의 다른 글
TDD (Test-Driven Development) (0) | 2023.11.16 |
---|---|
Django 프로젝트(1) - Hot🔥Deal Blog (0) | 2023.11.08 |
Django 실습(9) 동영상 CRUD 구현하기 (0) | 2023.10.20 |
Django 실습(8) RDB(관계형 데이터베이스) 만들어보기 (2) | 2023.10.17 |
Django 템플릿 필터 (1) | 2023.10.17 |