我正在尝试找出如何使用 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,但没有连接两者。希望有人能帮我解决这个问题!!!
最佳答案
这是 a flask web-application 的“hello world”示例可以提供静态 html 和 javascript 文件,使用来自 javascript 请求的参数搜索数据库,并将结果作为 json 返回给 javascript:
import sqlite3
from flask import Flask, jsonify, g, redirect, request, url_for
app = Flask(__name__)
@app.before_request
def before_request():
g.db = sqlite3.connect('database.db')
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close()
@app.route('/')
def index():
return redirect(url_for('static', filename='page.html'))
@app.route('/json-data/')
def json_data():
# get number of items from the javascript request
nitems = request.args.get('nitems', 2)
# query database
cursor = g.db.execute('select * from items limit ?', (nitems,))
# return json
return jsonify(dict(('item%d' % i, item)
for i, item in enumerate(cursor.fetchall(), start=1)))
if __name__ == '__main__':
app.run(debug=True, host='localhost', port=5001) # http://localhost:5001/
else:
application = app # for a WSGI server e.g.,
# twistd -n web --wsgi=hello_world.application --port tcp:5001:interface=localhost
数据库设置代码来自Using SQLite 3 with Flask .
static/page.html
和 static/json-jquery.js
文件来自 Ajax/jQuery.getJSON Simple Example ,其中 javascript 代码被稍微修改以传递不同的 url 和 nitems
参数:
$(document).ready(function(){
$('#getdata-button').live('click', function(){
$.getJSON('/json-data', {'nitems': 3}, function(data) {
$('#showdata').html("<p>item1="+data.item1+" item2="+data.item2+" item3="+data.item3+"</p>");
});
});
});
关于javascript - 如何将Javascript连接到Python以两种方式共享JSON格式的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747527/