Hoe u uw Flask-app kunt verbinden met CouchDB: een NoSQL-database

Hoe u uw Flask-app kunt verbinden met CouchDB: een NoSQL-database

Flask verbinden met SQL-databases zoals PostgreSQL en SQLite is een makkie. Maar het framework synchroniseert ook perfect met NoSQL-databases zoals CouchDB. En als bijkomend voordeel kunt u uw gegevens eenvoudig opvragen wanneer u CouchDB met Flask gebruikt.





Klaar om een ​​verandering aan te brengen door een NoSQL zoals CouchDB te gebruiken met uw Flask-app? Hier leest u hoe u CouchDB op uw lokale computer instelt en verbindt met Flask.





Wat is CouchDB?

CouchDB is een NoSQL-database die momenteel eigendom is van de Apache Software Foundation. De software is geschreven met Erlang en werd voor het eerst uitgebracht in 2005.





In tegenstelling tot de reguliere tabelgekoppelde databases die u waarschijnlijk gewend bent, is CouchDB een niet-relationeel databasebeheersysteem dat gegevens opslaat als onbewerkte JSON.

CouchDB blokkeert niet, dus het vergrendelt de database niet tijdens het invoeren van gegevens. Een van de sterke punten van CouchDB is dat het een gelijktijdigheidscontrolebeleid voor meerdere versies gebruikt om gegevens te lezen en te schrijven. Het maakt dus gelijktijdige invoer van meerdere gebruikers mogelijk zonder interferentie van de bestaande structuur van de gegevens in de database.



CouchDB is dus snel tijdens zoekopdrachten en gemakkelijk om mee te werken bij het gebruik van asynchrone methoden. Dat gezegd hebbende, dit maakt het niet beter dan zijn SQL-tegenhanger. Elke technologie heeft zijn voor- en nadelen.

CouchDB instellen

Om CouchDB te gaan gebruiken, downloadt en installeert u een compatibele versie van CouchDB's officiële website .





En als die nieuwste versie niet voor u werkt, gaat u verder naar de CouchDB-archief en download versie 1.6.1, een eerdere versie van CouchDB.

Nadat u CouchDB hebt geïnstalleerd, voert u het op uw pc uit zoals elke andere desktop-app.





Open uw browser. Start vervolgens de CouchDB-server door het volgende in uw adresbalk te plakken:

http://localhost:5984/_utils/index.html

Python en Flask instellen

Deze tutorial gaat er echter van uit dat Python al op je pc is geïnstalleerd. Ga anders naar python.org en installeer de nieuwste versie van Python op uw pc.

Nadat u CouchDB hebt ingesteld, maakt u een projecthoofdmap. Open vervolgens uw opdrachtregel naar die map en maak een Python virtuele omgeving .

Installeer de nieuwste versie van Flask in de virtuele ruimte met behulp van Pip :

externe harde schijf van windows niet zichtbaar
pip install flask

Verbind kolf met CouchDB

Om CouchDB met uw Flask-app te gaan gebruiken, installeert u Kolf-CouchDB , het runtime-pakket voor het verbinden van de database met Flask.

Om dit te doen:

pip install Flask-CouchDB

Zodra u installeert Kolf-CouchDB succesvol, maak een app.py bestand in die hoofdmap. Maak op dezelfde manier een database.py bestand - dit zorgt voor het maken van uw database.

Open database.py en importeer de volgende pakketten:

from couchdb import Server

Maak vervolgens uw database in datzelfde bestand met behulp van het volgende codeblok:

from couchdb import Server
server = Server()
db = server.create('muocouch')

uitvoeren database.py via de KLI. Open of ververs vervolgens de lokale server van CouchDB via uw browser zoals u eerder deed. U zou nu de database moeten zien ( muocouch in dit geval) vermeld in CouchDB.

Verwant: Een Python-script uitvoeren

Opmerking: Zorg ervoor dat u een naamgevingsconventie voor kleine letters gebruikt voor databases, aangezien CouchDB mogelijk geen hoofdletters of gemengde letters accepteert.

Bewaar uw eerste CouchDB-gegevens met Flask

Uiteindelijk is het doel van elke database gegevensopslag. Zodra u een database in CouchDB heeft, kunt u er meteen vanuit uw Flask-app gegevens in opslaan.

Om te beginnen, open app.py en importeer de volgende pakketten:

from flask import Flask
from couchdb import Server
from flaskext.couchdb import Document

Maak vervolgens een Flask-app en CouchDB-serverinstantie:

app = Flask(__name__, static_url_path='/static')
app.debug=True
server = Server()

Laten we nu wat gebruikersinvoer opslaan in CouchDB:

@app.route('/', methods=['GET', 'POST'])
def register():
user = {
'username':'media site',
'email':'justmail@gmail.com',
'password':'encrypteddata'
}
db = server['muocouch'] #select the database
doc_id, doc_rev = db.save(user) #store your data in th database
return '

Your data should now be in the database

'

Als u wilt, kunt u uw Flask-server in de ontwikkelingsmodus zetten voordat u deze uitvoert.

Voer hiervoor de volgende opdracht uit via uw CLI:

set FLASK_ENV=development

Merk op dat het instellen van de servermodus optioneel is. Het maakt het debuggen van uw code alleen maar probleemloos.

Maar ongeacht de instelling van de servermodus, hier is hoe u de Flask-server start via de CMD:

flask run

Flask zet uw poort echter standaard op localhost:5000 . Je zou nu het bericht in de . moeten zien H2 tag zodra u dit adres via uw browser laadt.

Gegevens valideren en duplicaten controleren met CouchDB-query's

Om dit verder te standaardiseren, kunt u query's gebruiken om invoer te valideren en duplicaten in uw database te voorkomen. Het opvragen van CouchDB is een beetje anders dan hoe je dit doet met SQL-databases.

CouchDB gebruikt wat het 'JavaScript-weergaven' noemt om gegevens uit de database op te vragen. Gelukkig is dit relatief eenvoudig.

Voordat u verder gaat, ziet u hier hoe een standaard CouchDB-queryweergave eruitziet:

map_func = '''function(doc)
{ emit(doc.doc_rev, doc); }'''
myQuery = [docType].query(db, map_func, reduce_fun=None)

Laten we nu de bovenstaande code praktisch gebruiken:

#Create a document object model called ' Users :'
class User(Document):
doc_type = 'User'
@app.route('/', methods=['GET', 'POST'])
def register():
user = {
'username':'media site',
'email':'justmail@gmail.com',
'password':'encrypteddata'
}
db = server['muocouch'] #select the database
# Use the view function to fetch your data from CouchDB
map_func = '''function(doc)
{ emit(doc.doc_rev, doc); }'''
# Get all the data by running a query set
myQuery = User.query(db, map_func, reduce_fun=None, reverse=True)
q = [i['username'] for i in myQuery] # Loop out all the usernames from the database
q2 = [i['email'] for i in myQuery] # Loop out all the email addresses from the database
q3 = q+q2 # Merge both queries into a single list
print(q3)
return '

Your data is now in the database

'

De bovenstaande code gebruikt de Gebruiker class om de gegevens op te vragen die zijn opgehaald door de view-functie. Let goed op de parameters binnen de queryset ( mijnQuery ).

Afdrukken q3 , zoals u hierboven deed, zou nu alle gebruikersnamen en e-mailadressen in de database binnen de opdrachtregel moeten uitvoeren.

Dus hier is hoe u deze query kunt gebruiken om de invoer van gebruikers te valideren:

if not (user['username'] in q3 or user['email'] in q3):
#store your data into the database if itdoesn't exist
doc_id, doc_rev = db.save(user)
return '

Registered successfully

'
else:
return '

Username or email exists

'

Als u uw browser ververst, wordt de anders elke keer dat u een gebruikersnaam of e-mailadres probeert in te voeren dat al in de database staat. En als u een nieuwe invoert, slaat het uw gegevens met succes op door het uitvoeren van de indien voorwaarde.

Verwant: Hoe de Python if-instructie te gebruiken?

Dat is het! U hebt zojuist uw eerste NoSQL-database gemaakt met Flask-CouchDB.

Hoewel het maken en doorzoeken van databases in CouchDB draait om de voorbeelden die we hier hebben uitgelicht, kun je de functionaliteiten van Flask verder verkennen. U kunt bijvoorbeeld invoervelden laten draaien met wtforms en markeer duplicaten met het bericht van Flask flash .

U kunt uw vraag zelfs doorgeven aan JavaScript's jQuery om invoer te valideren en duplicaten asynchroon te controleren.

Is CouchDB beter dan SQL-databases?

Het gebruik van CouchDB of een andere NoSQL-database met Flask of een andere programmeertechnologie hangt af van uw voorkeur. Maar het komt van pas bij het omgaan met structuurloze gegevens en onbewerkte media.

Dat gezegd hebbende, wil je misschien, voordat je beslist, kijken naar de verschillen tussen NoSQL- en SQL-databases om je te helpen beslissen welke geschikt is voor jouw project.

Deel Deel Tweeten E-mail SQL versus NoSQL: wat is de beste database voor uw volgende project?

Het kiezen van een databasetype kan lastig zijn. Kies je voor SQL of NoSQL?

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • database
  • Programmeren
  • Codeerhandleidingen
Over de auteur Idisou Omisola(94 artikelen gepubliceerd)

Idowu is gepassioneerd door alles wat slimme technologie en productiviteit betreft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij vindt het ook heerlijk om af en toe uit de routine te stappen. Zijn passie om mensen de weg te wijzen in moderne technologie motiveert hem om meer te schrijven.

Meer van Idowu Omisola

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren