PyramidでSQLAlchemyを使う 〜単純なSELECTをする〜

Pyramidにて、SQLAlchemyを使って単純なSELECT文を実行する方法、ならびに取得した結果の利用方法について確認します。

SELECTするテーブル定義は以下とします。
※Pyramidのプロジェクトを作成したときに、デフォルトで定義されているmodelsを使います。

スクリーンショット 2014-05-17 21.57.22

また、以下のレコードが登録されている、とします。
続きを読む PyramidでSQLAlchemyを使う 〜単純なSELECTをする〜

PyramidでSQLAlchemyでPostgreSQLに接続する

Pyramid のプロジェクト作成時に、ScafoldにSQLAlchemyを指定した場合、データベースはSQLiteがデフォルトとなります。

今回はデータベースをPostgreSQLに変更する手順を確認します。

まずは前準備として、PostgreSQLにデータベースを用意します。
ここでは、localhostに、以下のデータベースとユーザを作って使う事にします。
データベース名:pyramid_db
接続ユーザ名:pyramid_user(パスワード:password)

続きを読む PyramidでSQLAlchemyでPostgreSQLに接続する

PyramidでSQLAlchemyでMySQLに接続する

Pyramid のプロジェクト作成時に、ScafoldにSQLAlchemyを指定した場合、データベースはSQLiteがデフォルトとなります。

今回はデータベースをMySQLに変更する手順を確認します。

まずは前準備として、MySQLにデータベースを用意します。
ここでは、localhostに、以下のデータベースとユーザを作って使う事にします。
データベース名:pyramid_db
接続ユーザ名:pyramid_user(パスワード:password)

create database pyramid_db;
create user pyramid_user@localhost identified by 'password';
grant all on pyramid_db.* to pyramid_user@localhost;

続きを読む PyramidでSQLAlchemyでMySQLに接続する

Pyramidでのログ出力方法(3)

さて前回まで、コンソールやファイルへのログ出力方法を確認しました。コンソールに出力するには、SreamHandlerを使い、ファイルに出力するにはFileHandlerを使いました。
今回はそれら以外のHandlerを利用してみます。
Pyramidのログ出力はPythonの標準のloggerを使いますので、そこに含まれるHandlerは基本的に使えるはずです。
HandlerについてはPyhtonのサイトにて説明がありますが、今回はその中で実際に使う事がありそうな、WatchedFileHandler、RotatingFileHandler、TimedRotatingFileHandlerについて確認します。
続きを読む Pyramidでのログ出力方法(3)

Pyramidでのログ出力方法(2)

前回に引き続きログ出力方法について書きます。前回はdevelopment.iniのログ出力関係の設定について書いたので、今回は実際にログを出力してみます。

  1. 利用するloggerの指定方法とloggerインスタンスの作り方
  2. ログの出力フォーマットのカスタマイズ
  3. ファイルへのログ出力方法

について見ていきます。
続きを読む Pyramidでのログ出力方法(2)

Pyramidでのログ出力方法(1)

今回は、Pyramidでのログ出力の方法について確認します。
公式ドキュメントのLoggingも合わせて確認してください。

さて、公式ドキュメントにある通り、PyramidではPythonのStandard Libraryのlogging moduleを使ってログを出力できます。また、そのための設定をiniファイルにて簡単に行う事ができます。
※ただし、pcreateコマンドで、scaffoldを指定したプロジェクトを構築した場合かも。普通がそうすると思うので特に気にしないで進みましょう。
今回もSQLAlchemyのscaffoldで作ったプロジェクトで説明していきます。
続きを読む Pyramidでのログ出力方法(1)

PyramidのURL DispatchによるURLマッピングについて(3)

今回はURLDispatchによるマッピングの3回目の記事です。
ルート定義の拡張性についてちょっと書いてみます。まず、Prefixについて。
一般的にWebアプリケーションでは、機能毎にURLが階層化されていきます。例えば以下のようなURLがあったとします。

/users/list
/users/show
/users/add
/users/delete

共通して/usersという階層があります。これをprefixとして定義することで、設定が簡単になります。
続きを読む PyramidのURL DispatchによるURLマッピングについて(3)

PyramidのURL DispatchによるURLマッピングについて(2)

前回はURLDispatchによるマッピングの設定方法について確認しました。
add_route関数とadd_view関数を使ったマッピングと、add_route関数と@view_cofigアノテーションを使ったマッピングの2通りの方法がありました。

さて、マッピングにより実行される処理ですが、前回まではPythonのパッケージ内の関数にひもづけていましたが、今回はクラスのメソッドにマッピングしてみます。

続きを読む PyramidのURL DispatchによるURLマッピングについて(2)

PyramidのURL DispatchによるURLマッピングについて

今回は、URL DispatchによるURLマッピングについて、少し詳しく調べてみます。
これまで見てきたHelloworldのサンプルも、starterプロジェクト、alchemyプロジェクトのサンプルも、URLDispatchによるマッピングを使っていました。
add_routeメソッドを使ってURLの形式をルートとして定義し、add_viewメソッドまたは、@view_configアノテーションにより、ルートと処理を関連づけました。
続きを読む PyramidのURL DispatchによるURLマッピングについて

Pyramidのプロジェクト構成〜alchemyの場合〜

今回はalchemyを使ったPyramidのプロジェクトを作ってみます。Pythonの仮想化環境を新しく用意して、そこに環境を作ります。alchemyとは、SQLAlchemyというORマッパーです。私の場合はデータベースはMySQLとかPostgreSQLなどのRDBをよく使うので、きっとこのプロジェクト構成を使うのだろうな、と思います。
続きを読む Pyramidのプロジェクト構成〜alchemyの場合〜