Python Wtforms
Import準備
$ source .activate $ pip install --upgrade pip $ pip install flask $ pip install flask_wtf $ pip install flask_exceptional
Wtforms
-- * app.py * --
from flask.ext.wtf import Form from wtforms.fields import TextField, BooleanField, RadioField from wtforms.validators import Required class Myform(Form): q1 = RadioField(u'q1',choices=[ (u'1',u'-2'), (u'2',u'-1'), (u'3',u'0'), (u'4',u'1'), (u'5',u'2')],validators=[Required()]) q2 = RadioField(u'q2',choices=[ (u'1',u'-2'), (u'2',u'-1'), (u'3',u'0'), (u'4',u'1'), (u'5',u'2')],default='2',validators=[Required()]) form = Myform()
-- html --
{% from "_formhelpers.html" import render_field %} <form method=post action="/question"> <div> だらしない {{ render_field(form.q1,class="form-inline form-group") }} きちんとした </div> <hr/> <div > 知能の低い {{ render_field(form.q2,class="form-inline form-group") }} 知能の高い </div> <hr/> <p><input type=submit value=Next> </form> <div><p> {{ form.q1.data }} </p></div>
- フォーム情報リセット
form.data = None
参考資料
- Form Validation with WTForms — Flask Documentation (0.11) - わかりやすいテンプレ - form_helpers
- WTForms Documentation -
- 関数の中でグローバル変数に代入する - global変数の扱い方
- クラス定義の基本 - Python 入門 - クラス定義の基本
PythonからPostgresSQLを操作する
事前準備
shkh.hatenablog.com developers.mobage.jp
$ heroku login $ heroku create question32 $ emacs Procfile $ pip freeze > requirements.txt $ heroku addons:create heroku-postgresql:hobby-dev --app question32 $ heroku pg:info #[Add-on] $ heroku pg:promote [Add-on] $ mkdir template $ mkdir static #bootstrapなど配置 $ touch index.html $ git add . $ git commit -m "flask" $ git push heroku master $ heroku open
- Herokuを利用する場合、main.pyには、portの指定が必要。
- Errorやcssが読み込めているのか確認する。
フォームの情報をPythonで扱う
- flaskにはそんな機能はない tnakamura.hatenablog.com
フォームからの入力をpostgreSQLに保存する
$ sudo apt-get install postgresql $ sudo apt-get install libpq-dev
$ finger postgres $ sudo passwd postgres $ su postgres $ psql =# create role akira with login password '********'; =# createdb qdb; =# exit $ psql qdb -U akira $ create table qtable(q1 integer,q2 integer,q3 integer,q4 integer,q5 integer,q6 integer,q7 integer,q8 integer,q9 integer);
import psycopg2 connector = psycopg2.connect(host=u"localhost",database=u"qdb" ,user=u"****",password=u"******") cursor = connector.cursor() sql = "insert into qtable values("+str(form.q1.data)+","+str(form.q2.data)+","+str(form.q3.data)+","+str(form.q4.data)+","+str(form.q5.data)+","+str(form.q6.data)+","+str(form.q7.data)+","+str(form.q8.data)+","+str(form.q9.data)+","+str(face)+");" cursor.execute(sql) connector.commit() cursor.close() connector.close()
参考資料
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position xx: ordinal not in range(128) への対応策 pythonのデフォルトエンコーディングをutf-8に変更する - Qiita
- python2.xでの日本語(マルチバイト文字)問題を一掃する!(その1) — ExSoft
- PythonのUnicodeEncodeErrorを知る - HDEラボ
- UbuntuでPostgreSQLを使ってみよう (2) — Let's Postgres - postgresqlを入れて初めにすること
Linux mint 最新版Rをインストールする方法
パッケージリストの用意
- /etc/apt/sources.listに以下を追加
deb http://cran.ism.ac.jp/bin/linux/ubuntu trusty/
- 鍵の取得
$ gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 $ gpg -a --export E084DAB9 | sudo apt-key add -
- コマンドラインでアップデート
$ sudo apt-get update $ sudo apt-get install r-base $ R --version
参考資料
- Linux Mint - R インストール! - mk-mode BLOG - インストール公開鍵の設定
- Rのインストール (Linux Mint, Ubuntu) - Qiita - R cran
Django Web開発環境構築
環境設定(linux mint)
$ virtualenv `which python3` django $ source bin/activate $ pip install django $ python >>> import django >>> django.VERSION
参考資料
Rでレポートを作成する
必用ライブラリのインストール
- The Comprehensive R Archive Network - knitr
- The Comprehensive R Archive Network - markdown
$ library(knitr) $ library(markdown)
レポートの作成方法(markdown)
- test.Rmd
# 概要 ## iris summary ` ``{r results='asis'} summary(iris) plot(iris[,1],iris[,2]) kable(head(iris,5)) ` ``
$ knit(test.Rmd) $ markdownToHTML("test.md","test.html")
レポートの作成方法(tex)
\documentclass{jsarticle} \begin{document} 一様乱数を5個作って平均する。 <<>>= x = runif(5) x mean(x) @ \end{document}
> Sweave("test.Rnw",encoding="utf-8") $ [emacs]Ctrl-c t j $ advipdf
参考資料
WebからLinkedDataを取得する
''' library(SPARQL) d<-SPARQL(url="http://...",query="SELECT * WHERE..) '''