CenOS6.5にPythonのvirtualenv環境とPython2.7、Python3とmod_wsgiをインストールする

CentOS6.5にPythonのvirtualenvをインストールします。
また、CentOSの公式のyumリポジトリには、Python2.6しかありませんので、他のリポジトリからPython2.7, Python3.3をインストールします。
また、apacheとPythonアプリケーションの連携のため、mod_wsgiをインストールします。

それでは、以下の手順で進めます。

まず、Developer toolsとpython-develをインストールします。

yum groupinstall "Development tools”
yum install python-devel

Python2.6用に、mod_wsgiをインストールします。

yum install mod_wsgi

続いて、pip、virtualenvをインストールします。

cd /tmp
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py
pip install virtualenv
pip install virtualenvwrapper   

続いて、python2.7、python3.3をインストールするために、以下のリポジトリを追加します。

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm  

これで、yum searchすると、python27、python33が見つかります。

python2.7をインストールします。

yum install python27
yum install python27-devel
yum install python27-setuptools
yum install python27-mod_wsgi

python3.3をインストールします。

yum install python33
yum install python33-devel
yum install python33-setuptools
yum install python33-mod_wsgi 

これで、python2.7とPython3.3がインストールされました。

以下のようにvirtual環境を作って利用できます。

mkvirtualenv --python=/usr/bin/python2.7 testenv

mod_wsgiも、pythonのバージョン毎に別々にあるのですが、これについては別途説明します。

Pyramidのセッション機能を使う(3)〜CSRF対策〜

PyramidのSessionFactoryを実装するさいにimplementが必要になるISessinインタフェースですが、ここではCSRF対策に関わる機能が規定されています。
CSRF対策に利用するトークンを発行する機能です。
=>トークンをどう使うかは実装者に委ねられています。当然ですが。

CSRFトークンの新規発行は以下のように行います。
token = request.session.new_csrf_token()

new_csrf_tokenメソッドによりトークンを発行します。
このとき、トークンがセッションに自動で格納されます。

発行済みのトークン取得するには以下のように、get_csrf_tokenメソッドを実行します。
token = request.session.get_csrf_token()

セッションに格納されている発行済トークンを取得します。
取得できなかった場合は、新規トークンを発行します。

続きを読む Pyramidのセッション機能を使う(3)〜CSRF対策〜

Pyramidのセッション機能を使う(2)〜Beakerを使う〜

前回はPyramidのUnencryptedCookieSessionFactoryConfigを使ったセッションの利用方法を確認しました。
UnencryptedCookieSessionFactoryConfigでは、容量やセキュリティの面で実際のアプリケーション開発には使いづらいので、今回はBeakerというライブラリを使ったセッション管理を試してみます。
BeakerはPyramidに特化したものではなく、PythonのWebアプリケーションにセッション機能とキャッシュ機能を提供してくれるライブラリです。
これをPyramidで簡単に利用できるようにしてくれるラッパーが、pyramid_beakerです。

それぞれインストールしますが、pyramid_beakerをインストールすればBeakerもインストールされます。
pip install pyramid_beaker

続きを読む Pyramidのセッション機能を使う(2)〜Beakerを使う〜

Pyramidのセッション機能を使う(1)

今回はPyramidでのセッション管理について確認します。
セッション管理については以下に公式ドキュメントがあります。

Pyramidで用意しているセッション管理の方法は、cookieにセッション値を書き込む形式のものです。
UnencryptedCookieSessionFactoryConfigというSessionFactoryを使います。
ドキュメントでも注意されていますが、クラス名の通り、Unencryptedな値をcookieに書き込むのでセキュアである必要が無い場合以外では使うべきではありません。
またcookie値は書き込める容量に限りがあるので、現実的には実際のアプリケーション開発では使えないと思います。
続きを読む Pyramidのセッション機能を使う(1)

PyramidでSQLAlchemy:Where句でIS NULLを使う

前回はSQLAlchemyにて、WHERE句でINを使ったOR条件検索の指定方法について確認しました。

今回は、IS演算子の使い方について見ていきます。
IS演算子を使うケースといえば、NULL判定ぐらいしか思いつきませんので、
以下のSQLを実行する事を目指します。

SELECT * FROM models WHERE value IS NULL;
SELECT * FROM models WHERE value IS NOT NULL;
SELECT * FROM models WHERE name IS NULL;
SELECT * FROM models WHERE name IS NOT NULL;

続きを読む PyramidでSQLAlchemy:Where句でIS NULLを使う

PyramidでSQLAlchemy:IN演算子でOR検索をする

前回はSQLAlchemyにてWHERE句でLIKEを使った部分一致検索の指定方法について確認しました。

今回は、IN演算子の使い方について確認します。

以下のSQLを実行する事を目指します。

SELECT * FROM models WHERE id IN ( 1, 2, 3 );
SELECT * FROM models WHERE id NOT IN ( 1, 2, 3 );
SELECT * FROM models WHERE name IN ( 'one', 'two' );
SELECT * FROM models WHERE name NOT IN ( 'one', 'two' );

続きを読む PyramidでSQLAlchemy:IN演算子でOR検索をする

PyramidでSQLAlchemy:LIKE演算子で部分一致検索をする

前回はSQLAlchemyにてWHERE句でAND条件やOR条件の指定方法について実装方法を確認しました。

今回からは、WHERE句でよく使うであろう演算子について確認します。
具体的には、等号(=)、不等号(<、>)、LIKE、IN、BETWEEN、IS、EXISTSなどありますが、
今回はLIKE演算子について見ていきます。

以下のようなSQLを実行する方法を確認します。

SELECT * FROM models WHERE name LIKE  'o%';
SELECT * FROM models WHERE name LIKE  '%n%';
SELECT * FROM models WHERE name LIKE  '%e';

続きを読む PyramidでSQLAlchemy:LIKE演算子で部分一致検索をする

PyramidでSQLAlchemy:Where句でAND/OR条件指定をする

前回はSQLAlchemyにて、WHERE句を使って条件指定したSELECT文の実行方法を確認しました。
今回は、そのWHERE句でのAND条件とOR条件の指定方法を確認します。
具体的には、filterメソッド内での条件の書き方で、AND条件になったり、OR条件になったりします。
それでは以下で説明します。
続きを読む PyramidでSQLAlchemy:Where句でAND/OR条件指定をする

PyramidでSQLAlchemyを使う 〜SELECT文でWHERE句を指定する〜

前回は単純なSELECT文の実行方法を確認しました。
今回は、それにWhere句で条件指定した検索の方法を、ORMを使った場合と、SELECT文を直接指定する場合の2通りで確認します。

確認するデータベース環境は前回と同じです。

以下のSQLを実行する事を目指します。

SELECT * FROM models WHERE id = 1;
SELECT * FROM models WHERE name = 'one';

続きを読む PyramidでSQLAlchemyを使う 〜SELECT文でWHERE句を指定する〜