Day2 tornado模型與模板

一区匠、模型

1干像、準備
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

from sqlalchemy.orm import sessionmaker
2、配置
db_url = 'mysql+pymysql://root:123456@127.0.0.1:3306/tornado9'

# 創(chuàng)建引擎建立連接
engine = create_engine(db_url)

# 模型與數(shù)據(jù)庫表關(guān)聯(lián)的基類驰弄,模型必須繼承于Base
Base = declarative_base(bind=engine)

# 創(chuàng)建session會話
DbSession = sessionmaker(bind=engine)
session = DbSession()

def create_db():
    # 映射模型對應的表
    Base.metadata.create_all()

def drop_db():
    # 刪除模型映射表
    Base.metadata.drop_all()

class Student(Base):
    id = Column(Integer, primary_key=True, autoincrement=True)
    s_name = Column(String(10), unique=True, nullable=False)
    s_age = Column(Integer, default=18)

    __tablename__ = 'student'
3麻汰、使用
#增
stu = Student()
stu.s_name = 'xiaoming'
stus.append(stu)
session.add_all(stus)
session.commit()

#刪
session.delete(stu)
session.commit()

#改
stu.s_name = 'xiaohua'
session.add(stu)
session.commit()

#查
#方法一:
stu = session.query(Student).filter(Student.s_name == 'xiaoming_1').first()
#方法二:
stus = session.query(Student).filter_by(s_name = 'xiaoming_0').all()

?

manage.py

import os

import tornado.web
import tornado.ioloop
from tornado.options import define, options, parse_command_line

from app.views import IndexHandler, XindexHandler, DbHandler, DropDbHandler, AddStuHandler, StusHandler

# 設(shè)置默認端口
define('port', default=80, type=int)


def make_app():
    return tornado.web.Application(handlers=[
        (r'/', IndexHandler),
        (r'/xindex/', XindexHandler),
        (r'/init_db/', DbHandler),
        (r'/drop_db/', DropDbHandler),
        (r'/add_stu/', AddStuHandler),
        (r'/stus/', StusHandler)
    ],
    # 指定參數(shù)表示文件在templates
    template_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates'),
    static_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static'))



if __name__ == '__main__':
    # 解析命令行
    parse_command_line()
    # 生成Application對象
    app = make_app()
    # 監(jiān)聽端口
    app.listen(options.port)
    # 啟動
    tornado.ioloop.IOLoop.current().start()

app/models.py

from sqlalchemy import Column, Integer, String

from utils.conn import Base

def create_db():
    # 映射模型對應的表
    Base.metadata.create_all()

def drop_db():
    # 刪除模型映射表
    Base.metadata.drop_all()

class Student(Base):
    id = Column(Integer, primary_key=True, autoincrement=True)
    s_name = Column(String(10), unique=True, nullable=False)
    s_age = Column(Integer, default=18)

    __tablename__ = 'student'

utils/conn.py


from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

# 練級數(shù)據(jù)庫格式
# mysql+pymysql://root:123456@127.0.0.1:3306/tornado9

db_url = 'mysql+pymysql://root:123456@127.0.0.1:3306/tornado9'

# 創(chuàng)建引擎建立連接
engine = create_engine(db_url)

# 模型與數(shù)據(jù)庫表關(guān)聯(lián)的基類,模型必須繼承于Base
Base = declarative_base(bind=engine)

# 創(chuàng)建session會話
DbSession = sessionmaker(bind=engine)
session = DbSession()


app/views.py

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

#  連接數(shù)據(jù)庫格式
# mysql+pymysql://root:123456@127.0.0.1:3306/tornado9

db_url = 'mysql+pymysql://root:123456@127.0.0.1:3306/tornado9'

# 創(chuàng)建引擎建立連接
engine = create_engine(db_url)

# 模型與數(shù)據(jù)庫表關(guān)聯(lián)的基類揩懒,模型必須繼承于Base
Base = declarative_base(bind=engine)

# 創(chuàng)建session會話
DbSession = sessionmaker(bind=engine)
session = DbSession()

二什乙、HTTP行為方法

方法 說明
GET 用于獲取數(shù)據(jù)
POST 用于創(chuàng)建數(shù)據(jù)
PUT 修改某個對象的全部屬性
PATCH 修改某個對象的部分屬性
DELETE 刪除數(shù)據(jù)

三、模板

1已球、模板文件路徑定義:Application(handlers=[], template_path='指定template文件夾的路徑')

2臣镣、獲取templates路徑 os.patch.join(os.path.dirname(os.path.abspath(__file__)), 'templates')

3辅愿、挖坑 {% block name %} {% end %}注意:這里和Flask的jinja2有區(qū)別。

4忆某、繼承{% extends '父模板名稱' %}

5点待、模板語法

{# 我是注釋! #}
{% block content %}
    <p>(??ˇ?ˇ?)</p>
    <select>
        {% for item in items %}
        <option {% if item == "Php" %} selected {% end %}>{{ item }}</option>
        {% end %}
    </select>

    {% for score in scores %}
        {% if score > 60 %}
            <p style="color:red;">{{ score }}</p>
        {% elif score < 10 %}
            <p style="color:green;">{{ score }}</p>
        {% else %}
            <p>{{ score }}</p>
        {% end %}
    {% end %}


    {% while len(items) %}
        <p>{{ items.pop() }}</p>
    {% end %}

    {% try %}
        <p>{{ item[10] }}</p>
    {% except %}
        <p>下標越界</p>
    {% finally %}
        <p>必須執(zhí)行操作</p>
    {% end %}

    {% set n=1 %}
    <p>{{ n }}</p>
{% end %}

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弃舒,一起剝皮案震驚了整個濱河市癞埠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聋呢,老刑警劉巖苗踪,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異削锰,居然都是意外死亡通铲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門器贩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颅夺,“玉大人,你說我怎么就攤上這事蛹稍“苫疲” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵唆姐,是天一觀的道長拗慨。 經(jīng)常有香客問我,道長厦酬,這世上最難降的妖魔是什么胆描? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任瘫想,我火速辦了婚禮仗阅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘国夜。我一直安慰自己减噪,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布车吹。 她就那樣靜靜地躺著筹裕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窄驹。 梳的紋絲不亂的頭發(fā)上朝卒,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音乐埠,去河邊找鬼抗斤。 笑死囚企,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瑞眼。 我是一名探鬼主播龙宏,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伤疙!你這毒婦竟也來了银酗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤徒像,失蹤者是張志新(化名)和其女友劉穎黍特,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锯蛀,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡衅澈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谬墙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片今布。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拭抬,靈堂內(nèi)的尸體忽然破棺而出部默,到底是詐尸還是另有隱情,我是刑警寧澤造虎,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布傅蹂,位于F島的核電站,受9級特大地震影響算凿,放射性物質(zhì)發(fā)生泄漏份蝴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一氓轰、第九天 我趴在偏房一處隱蔽的房頂上張望婚夫。 院中可真熱鬧,春花似錦署鸡、人聲如沸案糙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽时捌。三九已至,卻和暖如春炉抒,著一層夾襖步出監(jiān)牢的瞬間奢讨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工焰薄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拿诸,地道東北人入录。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像佳镜,于是被迫代替她去往敵國和親僚稿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容