エントリー

XAMPPでPythonを動作させるメモ

Pythonをインストールした際のメモ。

参考サイト

メモ

  • ざっと見たところ、まだバージョン3は広く使われていないように思ったので、今回はバージョン2(2.7.6)をインストールした。
  • 今回のインストール先はWindows7の64ビット版だけど、Pythonの64ビット版は一般的に使われるモジュールが64ビットに対応していなかったり…があるらしいので、32ビット版をインストールした。
  • CGIプログラムとして実行するために、httpd.confAddHandler.py を追加した。

データベースを使う

PythonからMySQLを使ってみる。MySQLに接続するためのドライバはたくさんあるけど、定番(のように思う)の MySQL for Python を使ってみる。

MySQL-python-1.2.4b4.win32-py2.7.exe をダウンロードして実行するだけでインストールされる。以下はMySQLへの接続例。

#!/python/python
# coding: UTF-8

import MySQLdb

con = MySQLdb.connect(host='127.0.0.1', db='dbname', user='username', passwd='password', charset='utf8')
cur = con.cursor(MySQLdb.cursors.DictCursor)
cur.execute('SET NAMES utf8')

print 'Content-Type: text/html'
print ''

print '<!DOCTYPE html>'
print '<html>'
print '<head>'
print '<meta charset="utf-8" />'
print '<title>MySQL</title>'
print '</head>'
print '<body>'

cur.execute('SELECT id, name FROM members LIMIT 10')

result = cur.fetchall()

for row in result:
  print '<hr />'
  print 'id=' + str(row['id'])
  print 'name=' + str(row['name'].encode('UTF-8'))

cur.close()
con.close()

print '</body>'
print '</html>'
  • localhost で接続しようとすると Can't connect to MySQL server on 'localhost' のエラーになった。IPアドレスなら接続できた。
  • MySQLdb.cursors.DictCursor を指定することにより、ディクショナリ形式で値を取得できる。

フレームワークを使う

1ファイルで構成されている軽量フレームワーク、Bottleを使ってみる。

Bottleをダウンロードすると含まれている bottle.py を適当な場所にコピーする。

同じ場所に hello.py を作成し、以下のコードを記述する。

from bottle import route, run

@route('/hello')
def hello():
  return 'Hello World!'

run(host='localhost', port=8080, debug=True)

コマンドプロンプトから python hello.py と入力すると、8080 でサーバーが起動する。ブラウザソフトから http://localhost:8080/hello にアクセスし、Hello World! と表示されれば成功。

CGIとして動作させる場合、以下のように記述する。

#!/python/python
# coding: UTF-8

import bottle
from bottle import route, run

@route('/hello')
def hello():
  return 'Hello World!'

run(server=bottle.CGIServer)

ブラウザソフトから hello.py/hello にアクセスし、Hello World! と表示されれば成功。この方法なら、ロリポサーバーなどでも手軽に使える予感。

MySQLを扱う場合、Bottle-MySQLプラグインを使用する。(プラグイン内部では、前述の MySQL for Python が呼び出されている。)

bottle.py と同じ場所に bottle_mysql.py を配置すれば、以下のコードでMySQLに接続できる。

#!/python/python
# coding: UTF-8

import bottle
import bottle_mysql

from bottle import route, run

mysql_plugin = bottle_mysql.Plugin(dbhost='127.0.0.1', dbuser='root', dbpass='1234', dbname='test')
bottle.install(mysql_plugin)

@route('/')
def show(db):
  db.execute('SELECT id, name FROM members LIMIT 10')
  result = db.fetchall()
  view = ''
  for row in result:
    view += '<hr />'
    view += 'id=' + str(row['id'])
    view += 'name=' + str(row['name'].encode('UTF-8'))
  return view

run(server=bottle.CGIServer)

ページ移動

ユーティリティ

カテゴリー

検索

エントリー検索フォーム
キーワード

過去ログ

過去ログ表示フォーム
キーワード

Feed