turbogears.database.session
http://www.josw.net/blog/?p=1044
PythonでSQLAlchemy使ってるとき、データベースからデータを取得するにはsessionmaker()使います。以下のような感じです。
ここで、モデル定義は済んでおり、既にデータベースにデータが格納されているとします。
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmakerengine = 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 sessions = 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行でデータベースからデータを取得出来るのはいい話だと思います。
無茶をしない程度に利用してみてください。
そうそう。取得したデータをリスト形式で保持したければ、リストの内包表記を使うと少し幸せになれます。蛇足でした。