FlaskをPostgreSQLやSQLiteなどのSQLデータベースに接続するのは簡単です。ただし、フレームワークはCouchDBなどのNoSQLデータベースとも完全に同期します。また、追加の利点として、FlaskでCouchDBを使用すると、データを簡単にクエリできます。
FlaskアプリでCouchDBのようなNoSQLを使用して変更を加える準備はできましたか?ローカルマシンにCouchDBをセットアップし、Flaskに接続する方法は次のとおりです。
CouchDBとは何ですか?
CouchDBは、現在Apache SoftwareFoundationが所有しているNoSQLデータベースです。 Erlangで書かれたこのソフトウェアは、2005年に最初にリリースされました。
よく使用される通常のテーブルリンクデータベースとは異なり、CouchDBは、データを生のJSONとして格納する非リレーショナルデータベース管理システムです。
CouchDBは非ブロッキングであるため、データ入力中にデータベースをロックしません。 CouchDBの長所の1つは、マルチバージョン同時実行制御ポリシーを使用してデータの読み取りと書き込みを行うことです。そのため、データベース内のデータの既存の構造に干渉することなく、複数のユーザーからの同時入力が可能になります。
したがって、CouchDBはクエリ中は高速で、非同期メソッドを使用している間は簡単に操作できます。とは言うものの、これはSQLの対応物よりも優れているわけではありません。それぞれのテクノロジーには長所と短所があります。
CouchDBのセットアップ
CouchDBの使用を開始するには、互換性のあるバージョンをからダウンロードしてインストールします。 CouchDBの公式ウェブサイト 。
その最新バージョンが機能しない場合は、に進んでください。 CouchDBアーカイブ CouchDBの以前のバージョンであるバージョン1.6.1をダウンロードします。
CouchDBをインストールしたら、他のデスクトップアプリと同じようにPCで実行します。
ブラウザを開きます。次に、以下をアドレスバーに貼り付けて、CouchDBのサーバーを起動します。
http://localhost:5984/_utils/index.html
PythonとFlaskを設定する
ただし、このチュートリアルでは、PCにPythonがすでにインストールされていることを前提としています。それ以外の場合は、 python.org PCに最新バージョンのPythonをインストールします。
CouchDBをセットアップしたら、プロジェクトのルートフォルダーを作成します。次に、そのディレクトリへのコマンドラインを開いて、 Python仮想環境 。
を使用して仮想空間に最新バージョンのFlaskをインストールします ピップ :
アマゾンパッケージが届きませんでした
pip install flask
FlaskをCouchDBに接続する
FlaskアプリでCouchDBの使用を開始するには、 Flask-CouchDB 、データベースをFlaskに接続するためのランタイムパッケージ。
これをする:
pip install Flask-CouchDB
インストールしたら Flask-CouchDB 正常に、作成します app.py そのルートフォルダ内のファイル。同様に、 database.py ファイル-これはデータベースの作成を処理します。
開ける database.py 次のパッケージをインポートします。
from couchdb import Server
次に、次のコードブロックを使用して、同じファイルにデータベースを作成します。
from couchdb import Server
server = Server()
db = server.create('muocouch')
実行する database.py CLI経由。次に、前に行ったように、ブラウザーを介してCouchDBのローカルサーバーを開くか更新します。これでデータベースが表示されます( ムオカウチ この場合)CouchDBにリストされています。
関連している: Pythonスクリプトを実行する方法
ノート: CouchDBは大文字または混合大文字を受け入れない可能性があるため、データベースには必ず小文字の命名規則を使用してください。
Flaskを使用して最初のCouchDBデータを保存する
最終的に、データベースの目的はデータストレージです。 CouchDBにデータベースを作成したら、Flaskアプリからすぐにデータベースへのデータの保存を開始できます。
開始するには、 app.py 次のパッケージをインポートします。
from flask import Flask
from couchdb import Server
from flaskext.couchdb import Document
次に、FlaskアプリとCouchDBサーバーインスタンスを作成します。
app = Flask(__name__, static_url_path='/static')
app.debug=True
server = Server()
それでは、いくつかのユーザー入力を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
'
必要に応じて、Flaskサーバーを実行する前に開発モードに設定できます。
これを行うには、CLIから次のコマンドを実行します。
set FLASK_ENV=development
サーバーモードの設定はオプションであることに注意してください。コードのデバッグに手間がかからないようにするだけです。
ただし、サーバーモードの設定に関係なく、CMDを介してFlaskサーバーを起動する方法は次のとおりです。
flask run
ただし、Flaskはデフォルトでポートをに設定します localhost:5000 。これで、メッセージが表示されます。 H2 ブラウザからこのアドレスを読み込んだら、タグを付けます。
CouchDBクエリを使用してデータを検証し、重複をチェックします
これをさらに標準化するために、クエリを使用して入力を検証し、データベース内の重複を防ぐことができます。 CouchDBのクエリは、SQLデータベースでこれを行う方法とは少し異なります。
CouchDBは、「JavaScriptビュー」と呼ばれるものを使用して、データベースからデータを照会します。幸い、これは比較的簡単です。
先に進む前に、基本的なCouchDBクエリビューがどのように表示されるかを次に示します。
map_func = '''function(doc)
{ emit(doc.doc_rev, doc); }'''
myQuery = [docType].query(db, map_func, reduce_fun=None)
次に、上記のコードを実際に使用してみましょう。
#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
'
上記のコードは ユーザー ビュー関数によってフェッチされたデータを照会するクラス。クエリセット内のパラメータに細心の注意を払ってください( myQuery )。
印刷 q3 、上記で行ったように、コマンドライン内のデータベース内のすべてのユーザー名と電子メールアドレスを出力する必要があります。
したがって、このクエリを使用してユーザーの入力を検証する方法は次のとおりです。
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
'
ブラウザを更新すると、 そうしないと すでにデータベースにあるユーザー名または電子メールを入力しようとするたびにステートメント。また、新しいデータを入力する場合は、を実行することでデータが正常に保存されます。 もしも 調子。
関連している: Pythonifステートメントの使用方法
それでおしまい! Flask-CouchDBを使用して最初のNoSQLデータベースを作成しました。
CouchDBでのデータベースの作成とクエリは、ここで強調した例を中心に展開していますが、Flaskの機能をさらに詳しく調べることができます。たとえば、を使用して入力フィールドをスピンアップできます wtforms Flaskのメッセージを使用して重複にフラグを立てます 閃光 。
クエリをJavaScriptのjQueryに渡して、入力を検証し、重複を非同期でチェックすることもできます。
CouchDBはSQLデータベースよりも優れていますか?
Flaskまたはその他のプログラミングテクノロジでCouchDBまたはその他のNoSQLデータベースを使用するかどうかは、好みによって異なります。しかし、構造のないデータや生のメディアを扱うときに便利です。
とは言うものの、決定する前に、NoSQLデータベースとSQLデータベースの違いを調べて、どちらがプロジェクトに適しているかを判断するのに役立てることができます。
共有 共有 つぶやき Eメール SQLとNoSQL:次のプロジェクトに最適なデータベースは何ですか?データベースタイプの選択は難しい場合があります。 SQLとNoSQLのどちらを選択する必要がありますか?
次を読む 関連トピック- プログラミング
- データベース
- プログラミング
- コーディングチュートリアル
Idowuは、スマートな技術と生産性に情熱を注いでいます。暇なときは、コーディングで遊んだり、退屈したときにチェス盤に切り替えたりしますが、たまに日常から離れることも大好きです。現代のテクノロジーの周りの道を人々に示すことへの彼の情熱は、彼がもっと書くように動機づけます。
IdowuOmisolaのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください