- 追加された行はこの色です。
- 削除された行はこの色です。
** 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)
}}