2009-08-23 6 views
3

ORMを使用するのではなく、PythonとMySQLでORM(SQLObject/SQLAlchemy)を使用しない次のアプローチを検討しています。私は短期的な見解では、私が理解できるものからうまくいくので、これが何らかの否定的な長期的な結果をもたらす可能性があるかどうかについて、いくつかのフィードバックを得たいと思います。これはSQLAlchemy/SQLObjectの使用を避けるための良いアプローチですか?

ではなくオブジェクトにデータベースから行を翻訳:

  • 各テーブルは、行がカーソルを表すオブジェクトがアクセスを提供する辞書
  • として検索されるクラス

  • で表されます

    cursor.mytable.get_by_ids(ハイ、ロー)

  • :そうのようなテーブルに現在時刻にtime_of_removalを設定する除去手段

したがって、本質的に各テーブルは、それを表すクラスがあり、そのクラス内で、別辞書は、各列を表すので、これはORMのために必要と離れません。

型マッピングは簡単です。なぜなら、各dict(行)は、python/blubの第1クラスオブジェクトであるため、オブジェクトのクラスを知ることができますし、Pythonの低レベルデータベースライブラリは、フィールドレベルを適切なアプリケーションレベルのタイプに変換します。

この道を進む際に問題が発生した場合は、教えてください。ありがとう。

答えて

8

これは、ORMの必要性を排除しません。そのはORMでです。その場合、なぜ車輪を再発明するのですか?

確立されたORMの使用を避けようとする説得力のある理由はありますか?

+0

まあ、主に私はそれが定義された機能の90%を必要としない場合は特にORMのすべてのインとアウトを学ぶ必要はありません。これは、私がMicrosoft Word上でメモ帳を使用するのが好きなのと同じ理由です。 – tirus

+6

さて、その90%を習得しないでください。あなたがそれを必要とするならば、それを持ち歩くのはまだまだ驚くほど便利です。ちなみに、テキスト編集について言えば、私はVimを試したときと同じ態度でした。私は周りを移動して入力するのに十分なことを学んだ、それはそれについてだった。しかし私はもっと高度なものを探し続けていました。効率的なやり方を学ぶために出発しましたが、今はVimの忍者です。 Vimja、もしそうなら。 – Eevee

+2

成熟しており、十分にテストされ、十分に文書化されているなど、成熟したORMを使用することに大きな利点があります。ホイールを再始動するということは、最初からやり直すことを意味します。コードを手に入れた人は、ORMを学ぶ方法を学びますが、膨大なドキュメントやチュートリアルは必要ありません。 – Soviut

2

あなたは引き続きSQLAlchemyを使用します。 ResultProxyは、一度.fetchmany()などを実行すると、実際には辞書です。

SQLAlchemyは、接続の管理や文の実行を容易にするツールとして使用します。ドキュメントはセクションごとにかなり分かれているので、必要な部分だけを読むことになります。

0

web.pyにはまともなdb抽象化があります(ORMではありません)。 クエリはSQLで書かれていますが(rdbms固有のものではありません)、サポートされているdbs(sqlite、mysql、postresqlなど)と互換性があります。 http://webpy.org/cookbook/selectから

myvar = dict(name="Bob") 
results = db.select('mytable', myvar, where="name = $name") 
関連する問題