Django for KN(Koinonia)
- 해당 문서는 Django 강의가 리뉴얼 되어 이전 과정들을 복습하는 문서로 작성 됨.
Database 연동
settings.configure(
DATABASES={
"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "melon-20230906.sqlite3"},
}
)
django.setup()
- sqlite3는 db명이 따로 없다. NAME key에 파일 경로 지정
- 장고는 1개의 project에서 여러개의 database를 연결할 수 있다.
def get_song_list(query: str):
cursor = connection.cursor()
if query:
param = '%' + query + '%'
sql = "SELECT * FROM songs WHERE 가수 LIKE %s OR 곡명 LIKE %s"
cursor.execute(sql, [param, param])
column_names = [desc[0] for desc in cursor.description]
song_list = [dict(zip(column_names , song_tuple)) for song_tuple in cursor.fetchall()]
return song_list
else:
cursor.execute("SELECT * FROM songs")
class Song(models.Model):
id = models.AutoField(primary_key=True)
가수 = models.CharField(max_length=100)
곡명 = models.CharField(max_length=200)
곡일련번호 = models.integerField()
순위 = models.integerField()
앨범 = models.CharField(max_length=200)
좋아요 = models.integerField()
커버이미지_주소 = models.URLField()
class meta:
db_table = "songs"
app_label = "melon"
def index(request):
query = request.GET.get("query", "").strip()
song_list = Song.obejects.all()
if query:
song_list = song_list.filter(
Q(곡명__icontains=query)| Q(가수__icontains=query)
)
return render(request, "index.html", {"song_list": song_list, "query": query})
- 모델 생성 후 간결하게 QuerySet 생성 및 조회가 가능하다.