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

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

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

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

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

優(yōu)點(diǎn)

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

缺點(diǎn)

  • 版本控制
    文件副本太多,極難做版本控制。經(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ù)量小
    基本上一個(gè)Excel模型,在目前主流Windows電腦上存放1萬數(shù)據(jù)就開始卡,10萬數(shù)據(jù)要刷新很久,100萬基本上非i7不能刷新和使用了

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

快速開發(fā)Python Web

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

先準(zhǔn)備一個(gè)文件夾,例如取名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='點(diǎn)擊運(yùn)行' value='運(yùn)行'>
            </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行代碼,很簡單的一個(gè)網(wǎng)頁

  • 3-5行,為了讓網(wǎng)頁支持中文
  • 7-13行,條件設(shè)置部分
    這里面有兩個(gè)要傳入py的變量,用name屬性進(jìn)行了標(biāo)記,分別是變量begindate,變量enddate
  • 14-33行,表格數(shù)據(jù)部分
    這里是根據(jù)上面的條件,傳入py數(shù)據(jù)的兩個(gè)變量,一個(gè)是表格標(biāo)題變量col,一個(gè)是表格數(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 = ['標(biāo)題1','標(biāo)題2','標(biāo)題3','標(biāo)題4']	# 傳入網(wǎng)頁的標(biāo)題列表
config = {'host':'123.123.123.123','user':'dan','passwd':'dan','port':3306,'db':'dan'}	# 數(shù)據(jù)庫配置信息

class IndexHandler(tornado.web.RequestHandler):
    def get(self):	# 進(jìn)入網(wǎng)頁時(shí)觸發(fā)
        self.render('index.html',col=col,data=(('',)))	# 渲染網(wǎng)頁,傳入?yún)?shù)
    
    def post(self):	# 點(diǎn)擊按鈕時(shí)觸發(fā)
        begindate = self.get_argument('begindate')	# 接收網(wǎng)頁傳來的參數(shù)1
        enddate = self.get_argument('enddate')		# 接收網(wǎng)頁傳來的參數(shù)2
        # 下面是數(shù)據(jù)庫配置,連接,運(yùn)行,關(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
    點(diǎn)擊網(wǎng)頁觸發(fā)getpost方法時(shí)調(diào)用該部分
  • tornado
    服務(wù)器配置,開啟服務(wù)器

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

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

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

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

知識點(diǎn)

前后端知識點(diǎn)
前端html
后端python pymysql模塊
python tornado模塊

總結(jié)

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

相關(guān)文章

  • Python字符串格式化format()方法運(yùn)用實(shí)例

    Python字符串格式化format()方法運(yùn)用實(shí)例

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

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

    BeautifulSoup是python的一個(gè)庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。下面這篇文章主要給大家介紹了關(guān)于Python利用BeautifulSoup解析Html的方法示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    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文件時(shí),有時(shí)候我們可能需要對文件名進(jìn)行批量修改,例如,我們可能需要將文件名中的特定文字刪除或替換,今天,我將向大家介紹如何使用Python編寫一個(gè)簡單的程序,選擇一個(gè)文件夾,并刪除文件名中的指定文字,需要的朋友可以參考下
    2023-09-09
  • Python?matplotlib實(shí)戰(zhàn)之箱型圖繪制

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

    箱型圖(Box?Plot),也稱為盒須圖或盒式圖,是一種用作顯示一組數(shù)據(jù)分布情況的統(tǒng)計(jì)圖,因型狀如箱子而得名,本文主要為大家介紹了如何使用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)存,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • python: 自動安裝缺失庫文件的方法

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

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

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

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

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

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

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

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

最新評論

自贡市| 云南省| 玉龙| 九龙县| 永兴县| 许昌市| 阳山县| 电白县| 富锦市| 陵川县| 铜陵市| 富顺县| 秀山| 广元市| 乳山市| 苏尼特右旗| 西盟| 南安市| 乐业县| 绥棱县| 黄梅县| 历史| 江门市| 镶黄旗| 固安县| 临湘市| 巴中市| 松滋市| 广饶县| 安顺市| 吉木萨尔县| 孝昌县| 吉安县| 重庆市| 六枝特区| 靖远县| 杨浦区| 双柏县| 奈曼旗| 尉犁县| 博爱县|