先看整體的目錄結構:

1、建立static\template\util\app幾個檔案夾。
2、新增manage.py檔案,内容如下:
# coding:utf-8
import os
import tornado.web
from tornado import ioloop
from tornado.options import define, options, parse_command_line
from app.views import IndexHandler, XindexHandler, DbHandler, DropHandler, AddStuHandler, StusHandler
from utils.Auth import *
define('port', default=8088, type=int)
class Application(tornado.web.Application):
# 2.定義路由
def __init__(self):
handlers = [
(r'/', IndexHandler),
(r'/init_db/', DbHandler), # 初始化資料庫
(r'/drop_db/', DropHandler), # 删除資料庫
]
settings = dict(
debug=True, # 調試模式,修改後自動重新開機服務,不需要自動重新開機,生産情況下切勿開啟,安全性
template_path='templates', # 模闆檔案目錄,想要Tornado能夠正确的找到html檔案,需要在 Application 中指定檔案的位置
static_path='static', # 靜态檔案目錄,可用于用于通路js,css,圖檔之類的添加此配置之後,tornado就能自己找到靜态檔案
login_url='/login', # 沒有登入則跳轉至此
cookie_secret='1q2w3e4r', # 加密cookie的字元串
pycket={ # 固定寫法packet,用于儲存使用者登入資訊
'engine': 'redis',
'storage': {
'host': 'localhost',
'port': 6379,
'db_sessions': 5,
'db_notifications': 11,
'max_connections': 2 ** 33,
},
'cookie': {
'expires_days': 38,
'max_age': 100
}
}
)
super(Application, self).__init__(handlers,
**settings)
# 用super方法将父類的init方法重新執行一遍,然後将handlers和settings傳進去,完成初始化
if __name__ == '__main__':
# 解析指令行
parse_command_line()
# 生産application對象
app = Application()
app.listen(options.port)
tornado.ioloop.IOLoop.current().start()
3、新增conn.py,這個檔案主要是連接配接資料庫的配置,注意資料庫的庫名得提前建立。
# coding:utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
HOSTNAME = '10.149.42.81'
PORT = '3306' # 注意這個不是本地端口是指遠端資料庫端口,因為pycharm已經先SSH連接配接到本地了
DATABASE = 'tornado'
USERNAME = 'root'
PASSWORD = '1230.0'
db_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
USERNAME,
PASSWORD,
HOSTNAME,
PORT,
DATABASE
)
# 連接配接資料庫
engine = create_engine(db_url)
Base = declarative_base(bind=engine) # 這個基類是維系類和資料表關系的目錄。
# 在對表資料進行增删改查之前,先需要建立會話,建立會話之後才能進行操作,就類似于檔案要打開之後才能對檔案内容操作。
Session = sessionmaker(engine)
session = Session()
4、建立model.py,内容如下:
#coding:utf-8
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()
# 定義模型 Student
# Base必須繼承,關聯資料庫和Student
class User(Base):
# 主鍵自增的int類型的id主鍵
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(10), unique=True, nullable=False)
pwd = Column(String(128), nullable=False)
email = Column(String(25), unique=True, nullable=False)
__tablename__ = 'user'
5、運作項目,python manage.py,浏覽器輸入http://127.0.0.1:8088/init_db生成資料庫表,删除同理。
6、至此資料庫遷移完成,建議使用navcat工具或者pycharm連接配接資料庫檢視資料表是否生成。