turbogears.database.session

http://www.josw.net/blog/?p=1044

PythonでSQLAlchemy使ってるとき、データベースからデータを取得するにはsessionmaker()使います。以下のような感じです。
ここで、モデル定義は済んでおり、既にデータベースにデータが格納されているとします。


from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///hoge.sqlite')
Session = sessionmaker(bind=engine, autoflush=True, transactional=True)
session = Session()

for data in session.query(Model):
print data.username

簡単に説明すると、4〜6行目でデータベースを指定してセッションを作ってます。
で、7行目のsession.query()にSQLAlchemyのmapperを指定すると、mapされたテーブルの行がクラスとしてdataへ渡されます。
そして8行目で表示してます。カラム名がクラスのデータメンバとして格納されてるわけですね。

で、これと同じ動きをTurbogearsで行う方法を発見したので備忘録的に投稿してみるわけです。
ここではSQLAlchemyを使うプロジェクトを作成してあり、モデル定義とデータ追加は…話が長いですね:)


from turbogears.database import session

s = session()
for data in s.query(Model):
print data.age

もっと短く書くとこうなります。


from turbogears.database import session as s
for data in s.query(Model):
print data.myfavoriteanimals

カラム名が長すぎてタイピング数は変わらないみたいですね。

しかし、3行でデータベースからデータを取得出来るのはいい話だと思います。

無茶をしない程度に利用してみてください。

そうそう。取得したデータをリスト形式で保持したければ、リストの内包表記を使うと少し幸せになれます。蛇足でした。