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

参考資料

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で扱う

フォームからの入力を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()

参考資料

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

参考資料

Rでレポートを作成する

必用ライブラリのインストール

 $ 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

参考資料