1. 程式人生 > >伺服器框架新增MySQL功能

伺服器框架新增MySQL功能

資料匯入資料庫

source 檔案路徑/檔名

程式碼流程

index介面

整體框架在前面x文章中的伺服器框架中修改
匯入pymysql庫,連結資料庫,返回conn物件,用conn物件建立一個鉤子cs = conn.cursor(),用鉤子去execute資料庫查詢語句,stock_infos = cs.fetchall() fetch所有的查詢資料。關閉鉤子,關閉conn物件

conn = connect(host="localhost", port=3306, user="root", password="123456", database="stock_db",
charset="utf8") cs = conn.cursor() cs.execute("select * from info;") stock_infos = cs.fetchall() cs.close() conn.close()

資料庫讀取出來的資料每一項是一個元祖,我們要把元祖裡的每一項匹配到前段程式碼的對應格式裡去
這是前段程式碼的格式,把他存到tr_template變數中

 tr_template="""<tr>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>
        <input type="button" value="新增" id="toAdd" name="toAdd" systemidvalue="000007">
        </td>
        </tr>"""

把資料去一一匹配

html = ""
    for line_info in stock_infos:
        html += tr_template%(line_info[0],line_info[1],line_info[2],line_info[3],line_info[4],\
                             line_info[5],line_info[6],line_info[7])

最後是固定格式:

content = re.sub(r"\{%content%\}", html, content)

返回content。

center介面

首先center介面需要做的是資料庫的兩個表聯合查詢,只需要改動執行的sql語句還有對應的前段demo就可以

 conn = connect(host="localhost", port=3306, user="root", password="123456", database="stock_db", charset="utf8")
    cs = conn.cursor()
    cs.execute("select i.code,i.short,i.chg,i.turnover,i.price,i.highs,f.note_info from info\
     as i inner join focus as f on i.id=f.info_id;")
    stock_infos = cs.fetchall()
    cs.close()
    conn.close()

    tr_template = """<tr>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>
            <a type="button" class="btn btn-default btn-xs" href="/update/300268.html"><span class=\
            "glyphicon glyphicon-star" aria-gidden="ture"></span>修改</a>
            </td>
            <td>
            <input type="button" value="刪除" id="toDel" name="toDel" systemidvalue="300268">
            </td>
            </tr>"""
    # content = re.sub(r"\{%content%\}", str(stock_infos), content)
    html = ""
    for line_info in stock_infos:
        html += tr_template % (line_info[0], line_info[1], line_info[2], line_info[3], line_info[4], \
                               line_info[5], line_info[6])

    content = re.sub(r"\{%content%\}", html, content)

服務端框架完整程式碼

import re
from pymysql import connect

URL_FUNC_DICT = dict()


def route(url):
    def set_func(func):
        # URL_FUNC_DICT["/index.py"] = index
        URL_FUNC_DICT[url] = func
        # def call_func(*args, **kwargs):
        #   return func(*args, **kwargs)
        # return call_func

    return set_func


@route("/index.html")  # 相當於 @set_func  # index = set_func(index)
def index():
    with open("./templates/index.html", encoding="utf-8") as f:
        content = f.read()

    conn = connect(host="localhost", port=3306, user="root", password="123456", database="stock_db", charset="utf8")
    cs = conn.cursor()
    cs.execute("select * from info;")
    stock_infos = cs.fetchall()
    cs.close()
    conn.close()

    tr_template="""<tr>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>
        <input type="button" value="新增" id="toAdd" name="toAdd" systemidvalue="000007">
        </td>
        </tr>"""
    # content = re.sub(r"\{%content%\}", str(stock_infos), content)
    html = ""
    for line_info in stock_infos:
        html += tr_template%(line_info[0],line_info[1],line_info[2],line_info[3],line_info[4],\
                             line_info[5],line_info[6],line_info[7])

    content = re.sub(r"\{%content%\}", html, content)

    return content


@route("/center.html")
def center():
    with open("./templates/center.html", encoding="utf-8") as f:
        content = f.read()

    #my_stock_info = "這裡是從mysql查詢出來的資料。。。"
    conn = connect(host="localhost", port=3306, user="root", password="123456", database="stock_db", charset="utf8")
    cs = conn.cursor()
    cs.execute("select i.code,i.short,i.chg,i.turnover,i.price,i.highs,f.note_info from info\
     as i inner join focus as f on i.id=f.info_id;")
    stock_infos = cs.fetchall()
    cs.close()
    conn.close()

    tr_template = """<tr>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>%s</td>
            <td>
            <a type="button" class="btn btn-default btn-xs" href="/update/300268.html"><span class=\
            "glyphicon glyphicon-star" aria-gidden="ture"></span>修改</a>
            </td>
            <td>
            <input type="button" value="刪除" id="toDel" name="toDel" systemidvalue="300268">
            </td>
            </tr>"""
    # content = re.sub(r"\{%content%\}", str(stock_infos), content)
    html = ""
    for line_info in stock_infos:
        html += tr_template % (line_info[0], line_info[1], line_info[2], line_info[3], line_info[4], \
                               line_info[5], line_info[6])

    content = re.sub(r"\{%content%\}", html, content)

    return content


def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html;charset=utf-8')])

    file_name = env['PATH_INFO']
    # file_name = "/index.py"

    try:
        # func = URL_FUNC_DICT[file_name]
        # return func()
        return URL_FUNC_DICT[file_name]()
    except Exception as ret:
        return "產生了異常:%s" % str(ret)


效果

在這裡插入圖片描述在這裡插入圖片描述

author:[email protected]
git:https://github.com/zhangyuespec/mini_web

可以直接拉取專案:
git clone https://github.com/zhangyuespec/mini_web.git