web-dev-qa-db-ja.com

SQLAlchemyを使用する理由コーディングにとても便利ですか?

PythonでプレーンSQLを書くことに非常に精通しているので、SQLAlchemyや他のORMを使用することで得られる利点に気づきませんでした。

プログラムでSQLを好まない人のために設計されていますか?それとも、スクリプトがさまざまな種類のデータベースを横断するようになっていますか?

または、スクリプトをよりPythonicにしますか?

それとも、基礎となるデータベースを扱ういくつかのタスクにとって非常に便利であり、多くの小さなことを自動的に行うので、SQLAlchemyを呼び出すコードを2〜3行書くだけで、すべての小さなデータベースの操作を実行できますか?

誰かがプレーンSQLを使用してデモンストレーションするコードとSQ​​LALchemyを使用してコードのデモを提供し、プレーンSQLを超える利点を示すことができれば、高く評価されます。

ありがとう!

40
pypyodbc

これを確認しましたか? https://groups.google.com/forum/?fromgroups=#!topic/sqlalchemy/VXXB12-3JCY

また、Django ORMとSQL Alchemyの比較:

http://blog.mathieu-leplatre.info/sqlalchemy-a-brave-new-world.html

上記のGoogleグループリンクから応答を貼り付けます。

マーク・エルボー2010/11/22

サンプルコードはありませんが、プレーンSQLを使用していくつかのPythonアプリケーション(および1つのC++アプリ)を作成し、SQLAlchemyを使用して新しいアプリの作業を開始したので、私の経験を共有します。

適度なサイズのSQLデータベースを維持するために数年を費やし、必ずしもPythonを使用しているわけではありませんが、多くの純粋なSQLを記述したことを付け加えます。

プログラムがSQLにアクセスしたとき、データにアクセスするためのSQLコードをたくさん書いていることに気づきました。このコードの多くは同一ではありませんが、非常に似ていて冗長であるように見えました。たとえば、単純な単一テーブル検索を見てください。単純なCRUD(作成、更新、削除)を実行する場合は、テーブルごとに少なくとも3つの別個のSQLステートメントを作成する必要があります。これらのSQLステートメントのスケルトンは似ていますが、特定の列名とテーブル名は異なります。列のリストとテーブル名を指定した場合にSQLステートメントを作成するいくつかのPythonルーチンを作成してしまいました。しかし、これはSQLAlchemyが行うこと(およびそれ以上)なので、なぜ車輪を再発明するのでしょうか。

C++アプリの場合(適切なORMが見つからなかった)、SQLステートメントとテーブルにアクセスするためのC++コードを生成するPythonスクリプトを作成しました。

もう1つの利点は、データベース構造の変更を比較的簡単に処理できることです。 SAアプリを開発していたときに、(少なくとも)テーブルの1つに新しい列が必要であることに気付きました。私はSAの宣言型アプローチを使用しており、列を自分の宣言型に追加するだけで済みました。 SQLコードやPythonコードを変更する必要はありませんでした。

SQLAlchemyで私が抱えていた「問題」の1つは、純粋なSQLを使って物事を行った方法を学ぶことです。最も簡単なレベルでは、SQLAlchemyはSQLとPythonコードを生成して単一のテーブルにアクセスできます。Pythonコードを記述して、この種の単一テーブルアクセスをより大きなデータグラフにマージしたくなるかもしれません、しかしSQLAlchemyの真の力(IMHO)は、複雑なデータグラフを自動的に処理できることです。

マーク

16
GodMan