1. 程式人生 > >python後端從資料庫請求資料給到前端的具體實現

python後端從資料庫請求資料給到前端的具體實現

先來貼一竄程式碼讓大家理解前端/後端/資料庫的工作原理,

首先簡要說明:前端向後端請求資料,後端根據前端請求資料的類別分析其需求,並連線到資料庫獲取相應資料:

來一段簡單的例項程式碼模擬淘寶商城:

前端程式碼:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/vue.js" type="text/javascript" charset="
utf-8"></script> <script src="js/socket.io.js" type="text/javascript" charset="utf-8"></script> <script src="js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="app"> <div class
="conList"> <div class="content" v-for='item in contentList'> <h3>{{item[1]}}</h3> <img :src="item[2]"/> <p>價格:{{item[3]}}</p> <p>數量:{{item[4]}}</p> </div> </div> </div> <script type="
text/javascript">
      //連線到本地伺服器 var socket=io('http://localhost:7444') var app=new Vue({ el:'#app', data:{ contentList:[], }, mounted:function(){ //資料載入後向後臺請求資料,請求資料名稱為getContentList socket.emit('message','getContentList') } }) //監聽後端返回的資料 socket.on('reply',function(data){ //如果返回資料型別為contentList則做如下操作 if (data.type=='getContentList'){ app.contentList=data.data } // console.log('data',data.data) }) </script> </body> </html>

後端socketio框架伺服器:

import  socketio
import eventlet
import random
import pymysql

# 例項化socketio物件
sio=socketio.Server()

@sio.on('connect')
def connect(sid,environ):
    print('environ123',environ)

#  監聽前端傳入的請求資料
# 根據請求資料連線資料庫獲取目標資料
@sio.on('message')
def message(sid,data):
    print('message',data)
    if data=='getContentList':
        # 連線資料庫
        db=pymysql.connect('localhost','root','123456','python1')
        # 使用 cursor() 方法建立一個遊標物件 cursor
        cursor=db.cursor()
        #mysql語句
        sql='select item_id,item_title,item_image,item_price,num from tb_cart;'
        # 執行sql語句
        cursor.execute(sql)
        # 獲取所有遊標
        data1=cursor.fetchall()
        # 因為data1為元組,到傳到前端只能讀取到一條資訊,所以要轉成列表
        data=list(data1)
        # 給前端返回資料標名資料型別,前端好區分需求資料
        content={'type':'getContentList','data':data}
        print(data,'12311111')
        # 將整理好的資料返回到前端
        sio.emit('reply',content)

@sio.on(
'disconnect') def disconnect(sid): print('disconnect123',sid) if __name__=='__main__': # sio通過middleware轉為應用服務 app=socketio.Middleware(sio) # 依賴eventlet閘道器伺服器 eventlet.wsgi.server(eventlet.listen(('',7444)),app)