** Flask [#ja6c4c0d]
* Sqlalchemy [#va7a3848]

** グローバル [#acb0a3c3]
config.CSS_DEBUGの使い方
dbの定義

#prettify{{
pythonファイル内で
#prettify(python){{
#! coding:utf-8
"""
使い方

CSS_DEBUG =True
	# Generate DB
	import db
	db.metadata.create_all()

# 環境変数へ格納
"""

app.config.from_object(__name__)
from sqlalchemy import create_engine, MetaData

app.config['CSS_DEBUG'] = True
# Generate Engine
engine = create_engine('sqlite:///db.sqlite3', echo=True)
metadata = MetaData() # まじない
metadata.bind = engine # まじない

app.config.pop('CSS_DEBUG', None)で取り出せる.

## Define Table
from sqlalchemy import (Table, Column, Integer, String)
menus = Table(
	'menus', metadata,
	Column('id', Integer, primary_key=True),
	Column('name', String),
	Column('kcal', Integer)
	)

if __name__ == '__main__':
	# DB Create
	# python -c "import db;db.metadata.create_all()"
	metadata.create_all()
}}
** エラー [#ld1fe3d4]
#prettify{{
Internal Server Error
The server encountered an internal error and was unable to complete your request.   Either the server is overloaded or there is an error in the application.
// code

** DBを使う(CRUB) [#g5eb33fa]
#prettify(python){{
#! coding:utf-8
"""
使い方

	
	# Tables
	menus = Table(
		'menus', metadata,
		Column('id', Integer, primary_key=True),
		Column('name', String),
		Column('kcal', Integer)
		)
	# CRUD(クラッド)
	Create, Read, Update, Delete
"""
import db

db.metadata.create_all()

# [C] Create
db.menus.insert().execute(name='チュッパチャプス', kcal=100)
db.menus.insert().execute(name='カレーメシ', kcal=500)
db.menus.insert().execute(name='ラーメン', kcal=700.1)

# [R] Read
data = db.menus.select().execute().fetchall()
for d in data:
	print(">> Select:{}".format(d))

# [R] Read
datas = db.menus.select().where(db.menus.c.kcal < 200).order_by('kcal').limit(5).execute().fetchall()
for d in datas:
	print(">> Select:{}".format(d))

# [R] Read
datas = db.menus.select().where(db.menus.c.kcal > 400).order_by('kcal').limit(5).execute().fetchall()
for d in datas:
	print(">> Select:{}".format(d))

# [U] Update
db.menus.update().where(db.menus.c.id == 1).execute(kcal=1000)

# [D] Delete
db.menus.delete().where(db.menus.c.kcal < 1000).execute()




}}
よくでるがよく分からん.appの起動時におかしくなっている.一度落ち着いて再起動すべし.

** エラー [#r74ebc24]
 <link rel=stylesheet type=text/css href="{{ url_for('static/css', filename='css_debug.css') }}">

 BuildError: Could not build url for endpoint 'static/css' with values ['filename']. Did you  mean 'static' instead?
* SESSION [#v546718a]

ただしくはこちら
 url_for('static', filename='css/css_debug.css')
ファイルパスはfilenameに記述する
** models.py [#f2f9e332]
#prettify(python){{
#! coding:utf-8
"""
"""

** flask-bootstrap [#r55b0ea5]
#prettify{{
<!-- flask-bootstrapモジュールのおまじない-->
 {% extends "bootstrap/base.html" %}
 <!-- タイトル -->
 {% if title %} {% block title %} {{title}} {% endblock title %} {% else %} {% block title %} Flaskr {% endblock title %} {% endif %}
 <!-- 静的ファイルフォルダからCSSを読み込む -->
 {%- block styles %} {{ super() }}
 <!-- userのスクリプト-->
 <link rel=stylesheet type=text/css href="{{ url_for('static', filename='user_style.css') }}">
 <!-- もしCSSデバックするなら-->
 {% if config.CSS_DEBUG %}
 <link rel=stylesheet type=text/css href="{{ url_for('static', filename='css_debug.css') }}"> {% endif %} {%- endblock styles %} {% block navbar %}
 <div class="navbar navbar-default">
     <h1>Flaskr</h1>
     <!-- デバッグモード機能 -->
     <div>
         <a href="{{ url_for('debug_css_mode') }}">CSSデバッグモード</a>
     </div>
     <!-- デバッグ用リセット機能 -->
     <div>
         {% if session.logged_in %}
         <a href="{{ url_for('reset_entry') }}">リセット</a> {% endif %}
     </div>
     <!-- ログインログアウトの表示(session.logged_inキーを使って、ログインアウトの状態を判別) -->
     <div>
         {% if not session.logged_in %}
         <a href="{{ url_for('login') }}">ログイン</a> {% else %}
         <a href="{{ url_for('logout') }}">ログアウト</a> {% endif %}
     </div>
     <!-- ビューの変更 -->
     <div>
         <a href="{{ url_for('show_pyramid') }}">ピラミッドビュー</a>
     </div>
     <div>
         <a href="{{ url_for('show_entries') }}">タイムラインビュー</a>
     </div>
     <!-- flashを使ったメッセージの表示 -->
     {% for message in get_flashed_messages() %}
     <div class="flash">{{ message }}</div>
     {% endfor %}
 </div>
 {%- endblock navbar %} {% block content %}
 <div class="container">
     <div class="row">
         <div class="col-md-4">
             {% block left %}
             <!-- ログイン中ならば追加要素を表示 -->
             {% if session.logged_in %}
             <form action="{{ url_for('add_entry') }}" method="post" class="add-entry">
                 <p>新規作成</p>
                 <div class="form-group">
                     <label>title</label>
                     <textarea name="title" class="form-control form-title" rows=1 cols=4>タイトルを入力してください</textarea>
                 </div>
                 <div class="form-group">
                     <label>why</label>
                     <textarea name="why" class="form-control form-why" rows=1 cols=4>目的を入力してください</textarea>
                 </div>
                 <div class="form-group">
                     <label>method</label>
                     <textarea name="method" class="form-control form-method" rows=1 cols=4>手法を入力してください</textarea>
                 </div>
                 <button type="submit" class="btn btn-default">Submit</button>
             </form>
             {% endif %} {% endblock left %}
         </div>
         <div class="col-md-8">
             {% block right %}{% endblock right %}
         </div>
     </div>
 </div>
import unittest

from datetime import datetime
from sqlalchemy import create_engine
from sqlalchemy import (Column, Integer, String)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    passward = Column(String)



if __name__ == '__main__':
    engine = create_engine('sqlite:///db.sqlite3', echo=True)
    Base.metadata.create_all(engine)
    
    unittest.main()

}}

 {% block footer %} jQuery日本語リファレンス http://semooh.jp/jquery/api/selectors/.class/ {% endblock footer %} {% endblock content %}
** crud.py [#rddb5c03]
#prettify(python){{
#! coding:utf-8
"""
"""

import unittest

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from model import User

# Generate Session
engine = create_engine('sqlite:///db.sqlite3', echo=True)
Session = sessionmaker(bind=engine)
session = Session()

# [D] DELETE ALL
session.query(User).delete()
session.commit()

# [C] Create
ed_user = User(name='ed', fullname='Ed Jones', passward='edspassword')
session.add(ed_user)

# [C] Create
session.add_all([
    User(name='wendy', fullname='Wendy Williams', passward="wpass"),
    User(name='mary', fullname='Mary Williams', passward="mmpass"),
    User(name='fred', fullname='Fred Williams', passward="fefepass"),
    ])

# Send commit - トランザクションをコミット
session.commit()

# [R] READ
for row in session.query(User).all():
    print(">>Read:",row.id, row.name, row.fullname, row.passward)

# [U] Update
row = session.query(User).filter_by(id=1).one()
row.name = "torina update"
session.add(row)
session.commit()

# [D] DELETE
row = session.query(User).filter_by(id=2).one()
session.delete(row)
session.commit()


# [R] READ
for row in session.query(User).all():
    print(">>Read:",row.id, row.name, row.fullname, row.passward)


}}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS