最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python tornado用40行代碼搭建數(shù)據(jù)庫交互網(wǎng)頁實現(xiàn)快速全棧開發(fā)方式

 更新時間:2024年12月30日 09:32:52   作者:但老師  
文章講述了作者從使用Excel搭建報表轉(zhuǎn)向前端網(wǎng)頁開發(fā)的經(jīng)歷,使用Python和Tornado框架來快速開發(fā)一個簡單的網(wǎng)頁應(yīng)用,解決Excel報表的局限性,如版本控制、跨平臺兼容性、數(shù)據(jù)更新等問題

Python tornado用40行代碼搭建數(shù)據(jù)庫交互網(wǎng)頁實現(xiàn)快速全棧開發(fā)

作為數(shù)據(jù)分析師,我們大部分時間做的事情都是搭建線下Excel報表,這既有優(yōu)點也有缺點

優(yōu)點

  • 開發(fā)效率
    快速建模,最快十分鐘就可以建模
  • 數(shù)據(jù)傳播
    便于傳播,發(fā)文件就是發(fā)模型
  • 交互友好
    對使用者門檻低,便于修改

缺點

  • 版本控制
    文件副本太多,極難做版本控制。經(jīng)常有人找我修改模型卻發(fā)現(xiàn)我已經(jīng)更新了,只是沒有給他最新版本
  • 平臺限制
    無法跨平臺,Mac不能用,WPS不能用,Excel2010及以下版本不能用
  • 靜態(tài)數(shù)據(jù)
    更新數(shù)據(jù)有門檻,必須Windows系統(tǒng),需要Excel2013及以上版本,還需要數(shù)據(jù)庫賬號密碼,還需要IE9及以上瀏覽器,如果是早期Excel2016版本,還需要修改ReturnSingleDatabase語句
  • 數(shù)據(jù)量小
    基本上一個Excel模型,在目前主流Windows電腦上存放1萬數(shù)據(jù)就開始卡,10萬數(shù)據(jù)要刷新很久,100萬基本上非i7不能刷新和使用了

基于以上這些問題,我開始轉(zhuǎn)向前端網(wǎng)頁開發(fā),在研究了Flask,DjangoTornado之后,選擇了簡單快速的Tornado,就是下面這個:

快速開發(fā)Python Web

1. 文件結(jié)構(gòu)

先準備一個文件夾,例如取名python_web,文件結(jié)構(gòu)如下

python_web
    |-- templates
    |    |-- index.html
    |-- main.py

或者看截圖

2. index.html代碼

  • index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div>
            <form method='post' target='/'>
                <input type='date' title='開始日期' name='begindate'>
                <input type='date' title='結(jié)束日期' name='enddate'> 
                <input type='submit' title='點擊運行' value='運行'>
            </form>
        </div>
        <div>
            <table>
                <thead>
                    <tr>
                        {% for c in col %}
                        <th>{{c}}</th>
                        {% end %}
                    </tr>
                </thead>
                <tbody>
                    {% for i in data %}
                    <tr>
                        {% for x in i %}
                        <td>{{x}}</td>
                        {% end %}
                    </tr>
                    {% end %}
                </tbody>
            </table>
        </div>
    </body>
</html>

35行代碼,很簡單的一個網(wǎng)頁

  • 3-5行,為了讓網(wǎng)頁支持中文
  • 7-13行,條件設(shè)置部分
    這里面有兩個要傳入py的變量,用name屬性進行了標記,分別是變量begindate,變量enddate
  • 14-33行,表格數(shù)據(jù)部分
    這里是根據(jù)上面的條件,傳入py數(shù)據(jù)的兩個變量,一個是表格標題變量col,一個是表格數(shù)據(jù)變量data

3. main.py代碼

  • main.py
# -*- coding: utf-8 -*-
import os.path 
import pymysql

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web 

from tornado.options import define,options 

define('port',default=1111,help='run on the given port',type=int)	# 這里主要是定義端口

col = ['標題1','標題2','標題3','標題4']	# 傳入網(wǎng)頁的標題列表
config = {'host':'123.123.123.123','user':'dan','passwd':'dan','port':3306,'db':'dan'}	# 數(shù)據(jù)庫配置信息

class IndexHandler(tornado.web.RequestHandler):
    def get(self):	# 進入網(wǎng)頁時觸發(fā)
        self.render('index.html',col=col,data=(('',)))	# 渲染網(wǎng)頁,傳入?yún)?shù)
    
    def post(self):	# 點擊按鈕時觸發(fā)
        begindate = self.get_argument('begindate')	# 接收網(wǎng)頁傳來的參數(shù)1
        enddate = self.get_argument('enddate')		# 接收網(wǎng)頁傳來的參數(shù)2
        # 下面是數(shù)據(jù)庫配置,連接,運行,關(guān)閉
        db = pymysql.connect(host=config['host'],user=config['user'],passwd=config['passwd'],port=config['port'],db=config['db'])
        cs = db.cursor()
        cs.execute("select * from dan where everyday between '%s' and '%s'" % (begindate,enddate))
        data = cs.fetchall()
        cs.close()
        db.close()
        self.render('index.html',col=col,data=data)	# 渲染網(wǎng)頁,傳入?yún)?shù)

if __name__=='__main__':
    tornado.options.parse_command_line()
    app = tornado.web.Application(
        handlers=[(r'/',IndexHandler)],	# 將地址綁定到類
        template_path=os.path.join(os.path.dirname(__file__),'templates'))	# 指明網(wǎng)頁文件夾
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

40行代碼,主要分兩部分

  • IndexHandler
    點擊網(wǎng)頁觸發(fā)getpost方法時調(diào)用該部分
  • tornado
    服務(wù)器配置,開啟服務(wù)器

4. 參數(shù)傳遞流程圖

網(wǎng)頁跑起來是這樣的

選擇日期,點擊運行,就會出數(shù)據(jù)。這操作比Excel切片器就簡單多了,而且背后有海量的數(shù)據(jù)庫數(shù)據(jù)支撐,可以說是海量數(shù)據(jù)了

至于ip,Windows需要進入cmd輸入ipconfig查看,Mac需要進入Terminal輸入ifconfig查看(Mac的真是難找??)

知識點

前后端知識點
前端html
后端python pymysql模塊
python tornado模塊

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python字符串格式化format()方法運用實例

    Python字符串格式化format()方法運用實例

    這篇文章主要給大家介紹了關(guān)于Python字符串格式化format()方法運用實例的相關(guān)資料,字符串格式化是Python編程中十分常用的部分,它可以幫助我們將更具可讀性的數(shù)據(jù)輸出到控制臺或?qū)懭胛募?需要的朋友可以參考下
    2023-08-08
  • Python利用BeautifulSoup解析Html的方法示例

    Python利用BeautifulSoup解析Html的方法示例

    BeautifulSoup是python的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。下面這篇文章主要給大家介紹了關(guān)于Python利用BeautifulSoup解析Html的方法示例,文中通過示例代碼介紹的非常詳細,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-07-07
  • Python復(fù)制目錄結(jié)構(gòu)腳本代碼分享

    Python復(fù)制目錄結(jié)構(gòu)腳本代碼分享

    這篇文章主要介紹了Python復(fù)制目錄結(jié)構(gòu)腳本代碼分享,本文分析了需求、講解了匿名函數(shù)lambda等內(nèi)容,并給出了腳本代碼,需要的朋友可以參考下
    2015-03-03
  • 使用Python刪除PDF文件名中的特定文字

    使用Python刪除PDF文件名中的特定文字

    在處理大量PDF文件時,有時候我們可能需要對文件名進行批量修改,例如,我們可能需要將文件名中的特定文字刪除或替換,今天,我將向大家介紹如何使用Python編寫一個簡單的程序,選擇一個文件夾,并刪除文件名中的指定文字,需要的朋友可以參考下
    2023-09-09
  • Python?matplotlib實戰(zhàn)之箱型圖繪制

    Python?matplotlib實戰(zhàn)之箱型圖繪制

    箱型圖(Box?Plot),也稱為盒須圖或盒式圖,是一種用作顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖,因型狀如箱子而得名,本文主要為大家介紹了如何使用Matplotlib繪制箱型圖,需要的小伙伴可以參考下
    2023-08-08
  • Tensorflow 訓(xùn)練自己的數(shù)據(jù)集將數(shù)據(jù)直接導(dǎo)入到內(nèi)存

    Tensorflow 訓(xùn)練自己的數(shù)據(jù)集將數(shù)據(jù)直接導(dǎo)入到內(nèi)存

    這篇文章主要介紹了Tensorflow 訓(xùn)練自己的數(shù)據(jù)集將數(shù)據(jù)直接導(dǎo)入到內(nèi)存,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • python: 自動安裝缺失庫文件的方法

    python: 自動安裝缺失庫文件的方法

    今天小編就為大家分享一篇python: 自動安裝缺失庫文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python 實現(xiàn)logging動態(tài)變更輸出日志文件名

    python 實現(xiàn)logging動態(tài)變更輸出日志文件名

    這篇文章主要介紹了python 實現(xiàn)logging動態(tài)變更輸出日志文件名的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python 實現(xiàn)在txt指定行追加文本的方法

    python 實現(xiàn)在txt指定行追加文本的方法

    下面小編就為大家分享一篇python 實現(xiàn)在txt指定行追加文本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 如何用Python實現(xiàn)簡單的Markdown轉(zhuǎn)換器

    如何用Python實現(xiàn)簡單的Markdown轉(zhuǎn)換器

    這篇文章主要介紹了如何用Python實現(xiàn)簡單的Markdown轉(zhuǎn)換器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論

黄山市| 昭苏县| 泰州市| 乌审旗| 繁峙县| 峡江县| 尼勒克县| 吉林市| 双峰县| 民丰县| 萍乡市| 正安县| 蓬莱市| 蒲城县| 哈尔滨市| 兴仁县| 布尔津县| 阿鲁科尔沁旗| 那坡县| 资源县| 庆元县| 赤城县| 南开区| 屯昌县| 枞阳县| 施秉县| 嘉荫县| 印江| 永寿县| 庆安县| 宣汉县| 调兵山市| 满城县| 临海市| 雅江县| 黎川县| 于田县| 宁武县| 饶河县| 兴国县| 灵宝市|