Django와 함께 HarperDB 사용
이 글을 읽고 있다면 내 August Code Battle Hackathon의 참가자로 이 기사에 올 가능성이 높으므로 해당 참가자를 염두에 두고 작성하겠습니다.
장단점
이 시점에서 HarperDB와 Django는 서로 정확히 맞지 않는다는 점부터 말씀드리겠습니다. 대부분의 문제는 제가 video 및 article에서 MongoDB와 Django가 적합하지 않은 이유에 대해 말한 것과 유사하지만 운 좋게도 HarperDB는 훨씬 더 나은 위치에 있습니다.
MongoDB의 가장 큰 문제는 Django용 데이터베이스 드라이버가 없고 Django 쿼리를 NoSQL 쿼리로 변환하는 성공적인 구현이 없다는 것입니다. 결과적으로 Django가 구축한 많은 기능을 잃게 됩니다.
HarperDB에는 비슷한 문제가 있습니다. 현재 데이터베이스 드라이버가 없으므로 MongoDB와 동일한 문제가 발생합니다. HarperDB의 경우 SQL 및 NoSQL 분산 데이터베이스이므로 이 드라이버를 구축하는 것은 불가능한 작업이 아닙니다. 그들이 곧 그것을 할 수 있기를 바랍니다;)
한편 다음 사항을 고려하십시오.
더 이상 Django ORM 없음 — 데이터베이스 어댑터가 없으면 Django ORM 대신 HarperDB python package을 사용해야 합니다.
더 이상의 마이그레이션 없음 — 데이터베이스 드라이버 없이는 마이그레이션을 실행할 수 없습니다.
인증 및 모델 — 이 부분은 아직 확실하지 않습니다. 더 이상 Django ORM을 사용하지 않는 경우 사용자 모델에서 인증이 어떻게 작동합니까? 이 부분은 처음부터 다시 작성해야 할 수도 있습니다.
나의 제안
FastAPI, Flask 또는 사용자 정의 기능을 사용하십시오.
"FastAPI + React JS App With HarperDB 자습서"를 참조하십시오.
경량 프레임워크를 사용하기로 선택한 경우 원하는 데이터베이스 연결을 만드는 데 필요한 유연성을 갖게 됩니다. 백엔드 구축을 모두 우회하고 HarperDB를 사용하여 API를 구축하고 프런트엔드에서 직접 데이터베이스에 연결할 수도 있습니다.
안내 방법
Source code
준비된 데이터베이스와 사용할 준비가 된 빈 Django 앱이 있는 HarperDB 인스턴스 설정이 이미 있다고 가정하겠습니다. 그렇지 않은 경우 저를 따라 video tutorial for this article에서 설정할 수 있습니다.
1 - HarperDB 패키지 설치
HarperDB Python 패키지here를 설치할 수 있습니다. 이 패키지는 데이터베이스에 연결하고 쿼리를 만드는 데 필요한 도구를 제공합니다.
pip install harperdb
2 - 데이터베이스에 연결
기본
settings.py
개체 바로 위의 DATABASES
에서 이 연결을 만들어 보겠습니다.#settings.py
import harperdb
...
DB = harperdb.HarperDB(
url=<YOUR_HARPERDB_URL>,
username=<YOUR_HARPERDB_USERNAME>,
password=<YOUR_HARPERDB_PASSWORD>
)
3 - 쿼리 데이터베이스
먼저
DB
에서 settings.py
변수를 가져온 다음 데이터에 직접 액세스하여 뷰에서 데이터 액세스를 시작합니다.#views.py
from django.conf import settings
db = settings.DB
def index(request):
devs = db.search_by_value('hackathon', 'developers', "id", "*", get_attributes=['*'])
context = {"devs":devs}
return render(request, 'base/index.html', context)
이제 템플릿에서 이 데이터를 렌더링하려면 컨텍스트 사전을 통해 전달되는 다른 쿼리 세트처럼 취급해야 합니다.
<ul>
{% for dev in devs %}
<li>{{dev.name}}</li>
{% endfor %}
</ul>
4 - CRUD 추가
단일 항목 반환
def dev_profile(request, pk):
dev = db.search_by_hash('hackathon', 'developers', [pk], get_attributes=['*'])[0]
context = {"dev":dev}
return render(request, 'base/profile.html', context)
항목 만들기
from django.shortcuts import render, redirect
#....
def add_profile(request):
if request.method == 'POST':
data = request.POST
db.insert('hackathon', 'developers', [{"name":data['name']}])
return redirect('index')
return render(request, 'base/form.html')
항목 업데이트
def update_profile(request, pk):
if request.method == 'POST':
data = request.POST
db.update('hackathon', 'developers', [{"id":pk, "name":data["name"]}])
return redirect('index')
dev = db.search_by_hash('hackathon', 'developers', [pk], get_attributes=['*'])[0]
return render(request, 'base/form.html', {"dev":dev})
항목 삭제
def delete_profile(request, pk):
if request.method == 'POST':
db.delete('hackathon', 'developers', [pk])
return redirect('index')
dev = db.search_by_hash('hackathon', 'developers', [pk], get_attributes=['*'])[0]
return render(request, 'base/delete.html', {'dev':dev})
이것이 데모용입니다!
Reference
이 문제에 관하여(Django와 함께 HarperDB 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dennisivy11/using-harperdb-with-django-10m8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)