zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    svn更新出错,Previous operation has not finished; run 'cleanup' if it was interrupted
    angular转换日期格式问题
    eclipse自动补全和取消空格自动补全功能
    对枚举和静态常量的理解
    对Spring的IOC、DI、AOP的理解
    maven库因为网络原因jar下载失败
    java new一个对象的过程
    shelve模块读写文件报错
    $http.get(...).then(...).error is not a function
    jQuery动画的先后执行
  • 原文地址:https://www.cnblogs.com/Dark-fire-liehuo/p/9818858.html
Copyright © 2011-2022 走看看