服务器框架添加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

猜你喜欢

转载自blog.csdn.net/qq_34788903/article/details/84890511