2016-03-24 4 views
2

は、私はこのように私のフラスコアプリケーションでモデルを持っていると言います。データベース構成またはモデルを使用してFlaskでSQLAlchemyクエリを実行することの違いはありますか?私はこのタイプのレコードを取得するために私のデータベースを照会したい、フラスコビューで</p> <pre><code>class Foo(db.Model): id = db.Column(db.Integer, primary_key=True) bar = db.Column(db.String) </code></pre> <p>:

チュートリアルでは、人々はこのようなクエリを2通りの方法で実行していることがわかりました。flask.ext.sqlalchemy.SQLAlchemy構成またはモデルを使用しています。アプリが...

from flask import Flask 
from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config.from_object(os.environ['MY_SETTINGS']) 
db = SQLAlchemy(app) 

次にビューでクエリは次のようになります...

my_query = db.session.query(Foo).filter_by(id=some_id) 

モデルを使用して、このようなものを設定されているflask.ext.sqlalchemy.SQLAlchemy

を使用して

クエリが実行されたのを見たもう1つの方法は、次のようなモデルを使用することですこれ...

どういう違いがありますか?

私が知る限り、クエリはまったく同じことを返します。それで、私がどの方法を使うべきかを教えるのは難しいです。それとも何の違いはありませんか?

レコードの作成と削除はどうなりますか?

答えて

1

これはまったく同じことですが、2つの異なるアプローチから来ています。

古典的なSQLAlchemyアプローチはdb.session.query(Foo).filter_by(id=some_id)です。

Flask-SQLAlchemyは、とりわけ、すべてのモデルにプロパティを追加して、2番目のアプローチFoo.query.filter_by(id=some_id)を有効にします。

追加のコンテキスト(必要な場合):2番目のアプローチはDjango ORMが使用している方法に似ていますが、Web上でSQLAlchemyのマテリアルを検索する場合、ほとんどの場合、最初のアプローチがあります。

+0

ありがとう@ b4stien。私は彼らがまったく同じことをし、好みになるかどうか疑問に思った。彼らはDjango ORMを模倣するかもしれません。私が見た初期のチュートリアルのなかで、この奇抜なことは言及していません。 – freethebees

関連する問題

 関連する問題