質問
私は評価および見をCherryPyのためのプロジェクトは基本的にはJavaScriptフロントからクライアント側(ブラウザ)との会談にPythonのwebサービスを終了です。そこで、本当に必要なもの高速で軽量の末にできたらいいのに実施Pythonによるその後のさまざまな魅力を集めPostgreSQL DBを介ORM(JSONのブラウザ)
私も見Djangoるように、そのORMを内蔵しています。しかし私はDjangoがよい(以ズっぽい大人な雰囲気==遅?).
誰でも経験が異なるPython ORMソリューションの対比の特徴と機能、速度で、効率ようにはどうすればよいのですか。
解決
SQLAlchemyがフルで力強(使用のDataMapperパターン).Django ORMは、清浄機の構文や書(ActiveRecordのパターン).知らないます。
SQLAlchemyも コ層 ることを隠も複雑でActiveRecord-スタイルの構文りのDjangoのORM.
か心配Djangoている"。" で互いに分離を十分利用できるのORMしたい場合な輸入についてご覧いただけます。
とはいえ、また利用CherryPyのウェブ層で必要とORMっしょトSQLAlchemy.
他のヒント
また軽量化、既に馴染みのベイコモデルは、チェックアウトpeewee:https://github.com/coleifer/peewee
例:
import datetime
from peewee import *
class Blog(Model):
name = CharField()
class Entry(Model):
blog = ForeignKeyField(Blog)
title = CharField()
body = TextField()
pub_date = DateTimeField(default=datetime.datetime.now)
# query it like django
Entry.filter(blog__name='Some great blog')
# or programmatically for finer-grained control
Entry.select().join(Blog).where(Blog.name == 'Some awesome blog')
チェックを docs 詳します。
嵐 は世の中の単純なAPI:
from storm.locals import *
class Foo:
__storm_table__ = 'foos'
id = Int(primary=True)
class Thing:
__storm_table__ = 'things'
id = Int(primary=True)
name = Unicode()
description = Unicode()
foo_id = Int()
foo = Reference(foo_id, Foo.id)
db = create_database('sqlite:')
store = Store(db)
foo = Foo()
store.add(foo)
thing = Thing()
thing.foo = foo
store.add(thing)
store.commit()
とで痛みが落ち込む原SQL時に必要なもの:
store.execute('UPDATE bars SET bar_name=? WHERE bar_id like ?', [])
store.commit()
普段の使用 SQLAlchemy.か迫力とは、おそらく最も成熟したpython ORM.
一歩間違えれば利用CherryPyするも 規則に従 しているので、ロバート-蔵の男の現在のCherryPyプロジェクトリーダー)でした。個人的な使用でもいい人もいることがあるので急いでいます。
SQLObject 少より使いやすいORMよSQLAlchemyなっています。
個人的にはないのDjangoのORM場合を除いて計画書を書くプロジェクト全体にDjangoがでしょう。
SQLAlchemyの 宣言型 延長は標準的には0.5のキャッシュフローのすべて二つの指定されたインタフェースのようにDjangoや"するしかありません。でもシームレスに統合し"クラス/テーブルを使って設定され、datamapperスタイル:
Base = declarative_base()
class Foo(Base):
__tablename__ = 'foos'
id = Column(Integer, primary_key=True)
class Thing(Base):
__tablename__ = 'things'
id = Column(Integer, primary_key=True)
name = Column(Unicode)
description = Column(Unicode)
foo_id = Column(Integer, ForeignKey('foos.id'))
foo = relation(Foo)
engine = create_engine('sqlite://')
Base.metadata.create_all(engine) # issues DDL to create tables
session = sessionmaker(bind=engine)()
foo = Foo()
session.add(foo)
thing = Thing(name='thing1', description='some thing')
thing.foo = foo # also adds Thing to session
session.commit()
を使用していま エリクシール とSQLAlchemyて気に入ってくれている。エリクシール面のSQLAlchemyで見てどのようになりますでしょう"ActiveRecordのパターン"カウンターパーツ。
といっていいのかもしれないし、標準的な基準点のための高レベルのデータベースの相互作用のPython:http://wiki.python.org/moin/HigherLevelDatabaseProgramming
あらしのようにな 規則に従 具マルタンファウラーのDataMapperパターンかなり抽象的。
が考えられるように、未使用の特徴Djangoえる。うーばれるものを決める高級のプロジェクト.
SQLAlchemyは非常に迫力があります。しかしなスレッドに対して安全だと思がcherrypyにスレッドプールのモードになります。
使用したStorm+SQLiteのための小さなプロジェクトでしたか満足でしたマルチプロセ.を利用することにしたのだろうから、データベースに複数のプロセスの結果、データベース"ロック"。私に切り替えSQLAlchemy、同じコードと共に特に問題ございません。
思チェック SQLAlchemy
で使いやすいモデルのお仕事とはなに悪いです。 Django用SQLAlchemyでORM が使用することそのものではありませんでおります。
こちらは小さな例を選択orm物
>>> ed_user = User('ed', 'Ed Jones', 'edspassword')
>>> session.add(ed_user)
>>> our_user = session.query(User).filter_by(name='ed').first()
>>> our_user
<User('ed','Ed Jones', 'edspassword')>