2016-11-19 9 views
5

私は、Webアプリケーションを構築するためのPythonフレームワークであるFlaskの研究に専念しました。先月のSQLAlchemy(ORM)と未加工SQLクエリ

私はオンラインで見つかったさまざまなチュートリアルに続いて、SQLAlchemyを発見しました。

正直言って、私はSQL言語のかなり良い知識を持っているので、それは複雑で、本当に有用ではないことがわかります。

私が理解できないのは、SQLAlchemyのようなORMを使用することで、私が紛失している(純粋なSQLを使用する際に何か問題が起きる可能性がありますか?

純粋なSQLクエリを扱うための最良のPythonライブラリについてアドバイスをいただければ幸いです。

+3

Read:[ORMまたはプレーンSQLを使用していますか?](http://stackoverflow.com/questions/494816/using-anormormorplain-sql) –

+1

これは意見の問題です。私は純粋なSQLの側にいますが、それは誰にも驚かないはずです。 –

+0

@MoinuddinQuadriありがとう!私は今日読んだことがありますが、それは7歳なので、状況が進化したと思っていました。 –

答えて

5

多くあります。私が代わりに生のSQLクエリのORMを使用しての参照の最大の利点は、次のとおりです。

  1. ロバストネス:あなたは別のDatabseソースのSQLクエリを足すになるかもしれない構文エラーを心配する必要はありません。実際には、すべてのDBソースの構文を知る必要はありません。同じORMクエリーがすべてに対して機能します。 MySQLのようなSQLベースのエンジンであろうと、MongoDBのようなNoSQLベースのエンジンであろうと、
  2. スケーラビリティ:あなたが処理しているビジネス要件や種類/量に変更があります。データベースエンジンを変更するのは非常に一般的です。 ORMがそれを処理するので、クエリの中断について心配する必要はありません。唯一の条件は、ORMがそのデータソースをサポートする必要があることです。
  3. セキュリティは:ORMは、すでにそれらに対する保護シールドとして機能してあなたが原因SQL Injectionsなどへのセキュリティ侵害を心配する必要はありません
  4. 信託:作業した世界arroundのインテリジェントな心の巨大な束があります。 ORMを作成してシナリオと時間の経過に直面した問題を処理します。私は、ひとりの人がそれらの多くの側面を見逃してしまうかもしれないからです。したがって、ORMを使用することで、予期せぬ問題が発生しにくくなります。 (これはORMが完璧だとは限りませんが、エラーが発生しにくいものです)
  5. 時間::ORMを使用すると、多数のオープンソースライブラリのサポートを受けることができます。たとえば、のデータ移行の場合、データをチェックするWebポータル、データシリアライザ、などがあります。したがって、重要なことのために時間を節約できます。

    1. スピード:彼らはあなたのコードとクエリの実行の間のミドルウェアとしての役割を果たすようオームズが遅くなり、彼らはいくつかの副作用にもを持っているにもかかわらず

    。実際には、ORMは内部的に目的の結果を得るために同じ生のクエリを作成します。

  6. スコープ:ORMは実装の範囲を制限することがあります。私が言及したように、彼らはミドルウェアとして動作します。データベースエンジンがいくつかの機能をサポートしている可能性はありますが、ORMに実装されていない可能性があります。しかし、このようなシナリオでは、常に希望の結果を得るために生のSQLクエリを書くオプションがあります。

私が言及した利点のためにORMが好きです。