当前位置: 首页 > 面试题库 >

如何通过两种方式将Javascript连接到共享JSON格式数据的Python?

杨和蔼
2023-03-14
问题内容

我正在尝试找出如何使用JSON格式为要检索的数据在Python服务器和Javascript客户端之间创建本地连接。特别是,我需要在HTML客户端进行一些查询,将这些查询以JSON格式发送到服务器,然后在Python服务器端运行它们以在SQLite数据库上搜索数据。从数据库获取结果后,也将这些结果也以JSON格式发送回客户端。

现在,我可以在Python上运行查询并在JSON上进行编码,如下所示:

import sqlite3 as dbapi
import json

connection = dbapi.connect("C:/folder/database.db")
mycursor = connection.cursor()
mycursor.execute("select * from people")
results = []
for information in mycursor.fetchall():
        results += information

onFormat = json.dumps(results)
print(onFormat)

我知道这段代码的作用类似(实际上它可以运行),因为它在服务器上调用了服务,该服务以JSON格式返回数据(但此示例中的服务器不是Python):

<html>
    <head>
        <style>img{ height: 100px; float: left; }</style>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
        <div id="images"></div>
    <script>
      $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
      {
        tags: "mount rainier",
        tagmode: "any",
        format: "json"
      },
      function(data) {
        $.each(data.items, function(i,item){
          $("<img/>").attr("src", item.media.m).appendTo("#images");
          if ( i == 3 ) return false;
        });
      });</script>

    </body>
</html>

我需要知道如何(本地)运行python程序,使其成为可用的正在运行的Web服务,以及应该如何使用Javascript从python服务器检索数据。

我在互联网上到处都在寻找这个答案,但是我在任何地方都找不到这个答案,因为他们给出的唯一答案是关于如何在Python或Javascript中编码JSON而不是两者都连接。希望有人可以帮助我!


问题答案:

我终于找到了比Flask更简单的html" target="_blank">方法。这是一个名为Bottle的Python框架。您只需从官方网站下载该库并将其所有文件放在您的工作目录中,即可导入该库。您也可以使用随附的安装程序python程序进行安装,以避免随身携带源代码。然后,为了制作您的Web服务服务器,您可以像这样进行编码:

from bottle import hook, response, route, run, static_file, request
import json
import socket
import sqlite3

#These lines are needed for avoiding the "Access-Control-Allow-Origin" errors
@hook('after_request')
def enable_cors():
    response.headers['Access-Control-Allow-Origin'] = '*'

#Note that the text on the route decorator is the name of the resource
# and the name of the function which answers the request could have any name
@route('/examplePage')
def exPage():
    return "<h1>This is an example of web page</h1><hr/><h2>Hope you enjoy it!</h2>"

#If you want to return a JSON you can use a common dict of Python, 
# the conversion to JSON is automatically done by the framework
@route('/sampleJSON', method='GET')
def mySample():
    return { "first": "This is the first", "second": "the second one here", "third": "and finally the third one!" }

#If you have to send parameters, the right sintax is as calling the resoure
# with a kind of path, with the parameters separed with slash ( / ) and they 
# MUST to be written inside the lesser/greater than signs  ( <parameter_name> ) 
@route('/dataQuery/<name>/<age>')
def myQuery(name,age):
    connection= sqlite3.connect("C:/folder/data.db")
    mycursor = connection.cursor()
    mycursor.execute("select * from client where name = ? and age= ?",(name, age))
    results = mycursor.fetchall()
    theQuery = []
    for tuple in results:
        theQuery.append({"name":tuple[0],"age":tuple[1]})
    return json.dumps(theQuery)

#If you want to send images in jpg format you can use this below
@route('/images/<filename:re:.*\.jpg>')
def send_image(filename):
    return static_file(filename, root="C:/folder/images", mimetype="image/jpg")

#To send a favicon to a webpage use this below
@route('/favicon.ico')
def favicon():
    return static_file('windowIcon.ico', root="C:/folder/images", mimetype="image/ico")

#And the MOST important line to set this program as a web service provider is this
run(host=socket.gethostname(), port=8000)

最后,您可以通过以下方式在Javascript客户端上调用Bottlepy应用程序的REST Web服务:

var addr = "192.168.1.100"
var port = "8000"

function makeQuery(name, age){
    jQuery.get("http://"+addr+":"+port+"/dataQuery/"+ name+ "/" + age, function(result){
        myRes = jQuery.parseJSON(result);
        toStore= "<table border='2' bordercolor='#397056'><tr><td><strong>name</strong></td><td><strong>age</strong></td></tr>";
        $.each(myRes, function(i, element){
            toStore= toStore+ "<tr><td>"+element.name+"</td><td>" + element.age+ "</td></td></tr>";
        })
        toStore= toStore+ "</table>"
        $('#theDataDiv').text('');
        $('<br/>').appendTo('#theDataDiv');
        $(toStore).appendTo('#theDataDiv');
        $('<br/>').appendTo('#theDataDiv');
    })
}

我希望它对其他人有用



 类似资料:
  • 本文向大家介绍python3连接MySQL8.0的两种方式,包括了python3连接MySQL8.0的两种方式的使用技巧和注意事项,需要的朋友参考一下 1、下载MySQL官方的mysql-connector-python-8.0.17-py3.7-windows-x86-64bit.msi,直接点击安装; 2、安装完毕后直接可以导入mysql.connnector模块 连接方式一: 连接方式二:

  • 在跟着开源项目学习的时候发现作者用的是第二种方式,感觉通过参数传递会更简洁些,但是作者是通过自定义属性的方式,不太理解,有解释一下的吗? 在跟着开源项目学习的时候发现作者用的是第二张方式,感觉通过参数传递会更简洁些,但是作者是通过自定义属性的方式,不太理解,有解释一下的吗? 下面是作者的原代码

  • 本文向大家介绍php连接MySQL的两种方式对比,包括了php连接MySQL的两种方式对比的使用技巧和注意事项,需要的朋友参考一下 记录一下PHP连接MySQL的两种方式。 先mock一下数据,可以执行一下sql。 第一种是使用PHP原生的方式去连接数据库。代码如下: 其运行结构如下: Name: harry Age: 20 Name: tony Age: 23 第二种是使用PDO的方式去连接数据

  • 问题内容: 我正在尝试在python和lua之间传递数据(数组),并且我想使用Torch7框架在lua中处理数据。我认为这可以通过C来最好地完成,因为python和lua与C进行了接口。另外一些优点是不需要这种方式进行数据复制(仅传递指针)并且速度很快。 我实现了两个程序,一个程序将lua嵌入到c中,另一个程序将python将数据传递给c。它们都编译为可执行二进制文件时都可以工作。但是,当将c t

  • JSON 数据格式 JSON 是 JavaScript Object Notation 的简称,是一种轻量的数据表示方法。json格式采用key:value的方式记录数据,非常直观,比XML简洁,因而大受欢迎 介绍json格式前,先让我们看看XML格式。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用: <request> <firstName>

  • 问题内容: 有没有一种简单的方法可以使用Java将数据返回JSON中的Web服务客户端?我对servlet,spring等都很好。 问题答案: 对我来说,最好的Java <-> JSON解析器是XStream(是的,我实际上是在谈论json,而不是xml)。XStream已经处理循环依赖关系,并具有一个简单而强大的api,您可以在其中编写驱动程序,转换器等。 亲切的问候