文档章节

mini框架

中华强仔
 中华强仔
发布于 2017/08/21 17:37
字数 864
阅读 65
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

import re import time from pymysql import * import urllib.parse

全局变量存储请求文件的根路径信息

g_templates_root = "./templates" g_url_funcs = dict()

def function1(url):

def function2(func):
    g_url_funcs[url] = func

    def function3(file_name, *args):

        return None

    return None
return function2

@function1(r"/index.html") def index(file_name, url=None): try: file_name = file_name.replace(".py", ".html") file_html = open(g_templates_root + file_name) except Exception as ret: return "%s" % ret else: content = file_html.read() file_html.close() # 创建Connection连接 db = connect(host='localhost',port=3306,database='stock_db',user='root',password='mysql',charset='utf8') # 获得Cursor对象 cursor = db.cursor()

    sql = """select * from info;"""
    cursor.execute(sql)
    data_from_mysql = cursor.fetchall()
    cursor.close()
    db.close()
    html_template = """
        <tr>
            <td>%d</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" systemidvaule="%s">
            </td>
            </tr>"""

    html = ""
    for info in data_from_mysql:
        html += html_template % (info[0], info[1], info[2], info[3], info[4], info[5], info[6], info[7], info[1])


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

@function1(r"/center.html") def center(file_name, url=None): try: file_name = file_name.replace(".py", ".html") file_html = open(g_templates_root + file_name) except Exception as ret: return "%s" % ret else: content = file_html.read() file_html.close()

    # 打开数据库
    db = connect(host='localhost',port=3306,user='root',password='mysql',database='stock_db',charset='utf8')
    cursor = db.cursor()
    sql = """select i.code,i.short,i.chg,i.turnover,i.price,i.highs,j.note_info from info as i inner join focus as j on i.id=j.info_id;"""
    cursor.execute(sql)
    data_from_mysql = cursor.fetchall()
    cursor.close()
    db.close()

    html_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/%s.html"> <span class="glyphicon glyphicon-star" aria-hidden="true"></span> 修改 </a>
            </td>
            <td>
                <input type="button" value="删除" id="toDel" name="toDel" systemidvaule="%s">
            </td>
        </tr>
        """

    html = ""

    for info in data_from_mysql:
        html += html_template % (info[0], info[1], info[2], info[3], info[4], info[5], info[6], info[0], info[0])

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

@function1(r"/update/(\d*).html") def update(file_name, url=None): """更新页面""" # url---> #update/300268.html ret = re.match(url, file_name) if ret: stock_code = ret.group(1) # return stock_code # 测试

try:

    file_html = open(g_templates_root + "/update.html")
except Exception as ret:
    return "%s" % ret
else:
    content = file_html.read()
    file_html.close()

    # 打开数据库
    db = connect(host='localhost',port=3306,user='root',password='mysql',database='stock_db',charset='utf8')
    cursor = db.cursor()
    sql = """select f.note_info from focus as f inner join info as i on f.info_id=i.id where i.code="%s";""" % (stock_code)

    cursor.execute(sql)
    data_from_mysql = cursor.fetchone()
    cursor.close()
    db.close()

    note_info = data_from_mysql[0]

    content = re.sub(r"\{%code%\}", stock_code, content)
    content = re.sub(r"\{%note_info%\}", note_info, content)

    return content

@function1(r"/update/(\d*)/(.*).html") def update_note_info(file_name, url=None): """更新页面""" # url---> #update/300268.html ret = re.match(url, file_name) if ret: stock_code = ret.group(1) stock_note_info = ret.group(2) stock_note_info = urllib.parse.unquote(stock_note_info)

# return stock_code  # 测试
# return str((stock_code, stock_note_info))


# 打开数据库
db = connect(host='localhost',port=3306,user='root',password='mysql',database='stock_db',charset='utf8')
cursor = db.cursor()
sql = """ update focus inner join info on focus.info_id=info.id  set focus.note_info="%s" where info.code="%s";""" % (stock_note_info, stock_code)

cursor.execute(sql)
db.commit()
cursor.close()
db.close()

return "修改成功"

@function1(r"/del/(\d*).html") def delete(file_name, url=None): """用来显示修改页面""" stock_code = ""

ret = re.match(url, file_name)
if ret:
    stock_code = ret.group(1)


# 创建Connection连接
db = connect(host='localhost',port=3306,database='stock_db',user='root',password='mysql',charset='utf8')
# 获得Cursor对象
cursor = db.cursor()
sql = """delete from focus where info_id = (select id from info where code="%s");""" % (stock_code)
cursor.execute(sql)
db.commit()
cursor.close()
db.close()

return """取消关注成功"""

@function1(r"/add/(\d*).html") def add(file_name, url=None): """用来显示修改页面""" stock_code = ""

ret = re.match(url, file_name)
if ret:
    stock_code = ret.group(1)


# 创建Connection连接
db = connect(host='localhost',port=3306,database='stock_db',user='root',password='mysql',charset='utf8')
# 获得Cursor对象
cursor = db.cursor()

sql = """select * from focus where info_id = (select id from info where code="%s");""" % stock_code
cursor.execute(sql)
if cursor.fetchone():
    cursor.close()
    db.close()
    return "请不要重复关注....."


sql = """insert into focus (info_id) select id from info where code="%s";""" % (stock_code)
cursor.execute(sql)
db.commit()
cursor.close()
db.close()

return """关注成功"""

def app(environ, start_response): # 报头信息 status = '200 OK' # header 信息 response_headers = [('Content-Type', 'text/html')]

file_name = environ["PATH_INFO"]

# print("-"*30)
# 调用服务器的函数,给服务器传递参数 报头信息 
start_response(status, response_headers)

# 定义一个全局变量的字典,key=file_name values=函数的引用
# {"/index.html":index}
#update/300268.html
#r"/upate/\d*\.html":函数的引用
#
try:
    print("1")
    for url, call_func in g_url_funcs.items():
        print("2")
        ret = re.match(url, file_name)
        if ret:
            return call_func(file_name, url)

    else:
        print(g_url_funcs)
        return "sorry, 没有要找的页面 file_name(%s)" % (file_name)

except Exception as ret:
    print(g_url_funcs)
    return "cuowu"
中华强仔
粉丝 1
博文 9
码字总数 9269
作品 0
浦东
程序员
私信 提问
加载中
请先登录后再评论。
TDD的测试框架--Machine.Specification

Machine.Specification 是一个 TDD 测试驱动开发的测试框架,简化了测试,无需关心语言本身特性。 Machine.Specifications 带来的好处是不需要在代码里有注释,但同时阅读代码的人可以一目了...

匿名
2013/01/22
1.1K
0
mvc框架--Razor

Razor 是一个轻巧而优雅的servlet mvc框架 # 又一个轮子? no,写就她是为了证实我个人的某些想法,并在这个过程中练练手,这两种冲动碰撞在一起,自然而然地产生了Razor # Razor的现在和未来...

dtubest
2013/01/25
3.1K
0
Android3D应用与游戏开发框架--JQGL

JQGL 是一款针对Android设备上3D应用、游戏的开发框架。 核心功能是OpenGL-ES的使用框架,相对于大部分开发者而已,OpenGL是陌生的,没有专门研究无法进行相关的开发。 本框架针对于Android...

Jping
2013/02/21
1.6K
0
响应式框架--Groundwork

GroundworkCSS 是一个基于 Sass 预处理器的开源项目 ,主要用于快速构建响应式 Web 应用程序。拥有一个灵活的、可嵌套的网格系统,可以创建适应多种浏览设备的布局。 Groundwork 还提供多种 ...

匿名
2013/02/25
2.8W
4
WebUI自动化测试框架--Dagger

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子...

ChenKan
2013/03/05
2.8W
6

没有更多内容

加载失败,请刷新页面

加载更多

程序员职场:拥有一个学位将会在你的职业生涯中更加顺利!

1、作为程序员为什么要拥有学位? 很多情况下,作为程序员,学位是进入大公司的敲门砖。 现在很多大的科技公司,学位是硬性要求。 一般都是本科以上的学历,甚至有的必须是硕士以上学历。 如...

IT技术分享社区
03/03
0
0
varchar和nvarchar有什么区别? - What is the difference between varchar and nvarchar?

问题: Is it just that nvarchar supports multibyte characters? 只是nvarchar支持多字节字符吗? If that is the case, is there really any point, other than storage concerns, to us......

技术盛宴
16分钟前
5
0
用flutter给图片加个好看的遮罩层【flutter20个实例之六】

一、老套路,先看样式 左起图一是我业务中的样式,左起图二、三是下方源码展示样式(复制可直接运行,无额外组件引入) 二、讲解 1.结构拆分 我们先看下页面布局结构,首先肯定是有个GridVie...

一代码农码一代
16分钟前
9
0
世界上最美的瀑布在这里,太美了!

亲近大自然,高山流水遇知音,倾听心灵的声音。。。 声明:文章及图片、视频来自网络,如有版权方面的疑问请和我们联系,我们将在24小时内删除。 本文分享自微信公众号 - Python提升课堂(DJXY0...

花儿开放
2014/08/17
0
0
商城小程序制作流程

随着商城小程序的火爆,很多商家都迫不及待的想制作商城小程序,下面就和大家分享一下商城小程序制作流程? 第1步: 注册并认证小程序账号 注册并认证小程序账号,打开百度搜索,“微信公众平...

木鱼小铺小程序1
27分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部