Symfoware

Symfowareについての考察blog

Python BottleフレームワークでSQLAlchemyを使用する

SQLAlchemyの基本的な使い方を調べてみました。
SQLAlchemyの使い方1 単一テーブルのマッピングとデータの追加


Bottleフレームワークに組み込んで使ってみます。



テストデータ



SQLAlchemyについて調べていた時のデータをそのまま流用します。
データベースはPostgreSQL 9.3.2
「sample」データベースの「students」テーブルを使用します。



sample=# select * from students;
id |        name        |         kana        
----+--------------------+--------------------------
18 | 西住 みほ    | ニシズミ ミホ
19 | 武部 沙織    | タケベ サオリ
20 | 五十鈴 華    | イスズ ハナ
21 | 秋山 優花里 | アキヤマ ユカリ
22 | 冷泉 麻子    | レイゼイ マコ
(5 rows)






SQLAlchemy



Ubuntu 12.04にSQLAlchemyをインストールします。

SQLAlchemyの使い方1 単一テーブルのマッピングとデータの追加
こちらの手順と同様、easy_installでインストールしておきます。


$ sudo easy_install sqlalchemy







Bottle



http://bottlepy.org/docs/dev/index.html

以前触った時のメモはこちら。
Pythonの軽量Webフレームワーク「Bottle」

ファイルを直接ダウンロードして使用することにしました。


$ wget https://raw.githubusercontent.com/defnull/bottle/master/bottle.py







Bottle Plugins



http://bottlepy.org/docs/dev/plugins/index.html
こちらを見てみると、Bottle-Sqlalchemyプラグインがあります。

https://github.com/iurisilvio/bottle-sqlalchemy

これを使用することにしました。


$ wget https://raw.githubusercontent.com/iurisilvio/bottle-sqlalchemy/master/bottle_sqlalchemy.py








簡単なサンプル



bottle.py、bottle_sqlalchemy.pyをダウンロードしたフォルダに
index.pyを作成します。

テーブルに登録されているデータを表示するだけのサンプルはこんな感じになりました。


  1. # -*- coding:utf-8 -*-
  2. import bottle
  3. import bottle.ext.sqlalchemy
  4. import sqlalchemy
  5. import sqlalchemy.ext.declarative
  6. # SQLAlchemyお決まりの処理
  7. Base = sqlalchemy.ext.declarative.declarative_base()
  8. url = 'postgresql://pgadmin:password@192.168.1.101:5432/sample'
  9. engine = sqlalchemy.create_engine(url, echo=False)
  10. # sqlalchemyプラグインの設定
  11. app = bottle.Bottle()
  12. plugin = bottle.ext.sqlalchemy.Plugin(
  13.     engine,
  14.     Base.metadata,
  15.     keyword='db',
  16.     create=False,
  17.     commit=True,
  18.     use_kwargs=False
  19. )
  20. app.install(plugin)
  21. # studentsテーブルの定義
  22. class Student(Base):
  23.     __tablename__ = 'students'
  24.     id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
  25.     name = sqlalchemy.Column(sqlalchemy.String(20))
  26.     kana = sqlalchemy.Column(sqlalchemy.String(40))
  27. @app.get('/show')
  28. def show(db):
  29.     # 登録されている名前を表示
  30.     html = ''
  31.     for student in db.query(Student).all():
  32.         html += student.name + u'<br/>'
  33.     
  34.     return html
  35. # サーバー起動
  36. app.run(host='localhost', port=8080, debug=True)




$ python index.pyでサーバーを起動。
ブラウザで、http://localhost:8080/showを表示してみます。

390_01.png


ちゃんと登録されているデータが表示されました。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/04/10(木) 22:21:38|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<SQL Server 2014 ExpressをWindows Server 2012 R2にインストールする | ホーム | SQLAlchemyの使い方8 多対多のリレーション>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1382-4f822f58
この記事にトラックバックする(FC2ブログユーザー)