Python, как визуализовать данные с помощью d3.js?

Добрый день, нужно с бэкэнда передать данные и принять их d3.js.
import pymysql, json
from flask import Flask, render_template

app = Flask(__name__)


@app.route('/get_data')
def index():
	#Подключаемся к MYSQL
    conn = pymysql.connect(host='localhost', port=3306, 
        user='root', passwd='nemate666', db='data_map')
    cursor = conn.cursor(pymysql.cursors.DictCursor)
	
	#Вытаскиваем данные и сериализуем в json
    query_data = cursor.execute("SELECT project_name, countryname, lendprojectcost FROM   data_load")
    for row in cursor:
        data = json.dumps(row)
        data_json = [data]


	#Закрываем соединение
    cursor.close()
    conn.close()

    return render_template('index.html', data_json=data_json)


if __name__=="__main__":
    app.run(host='0.0.0.0', port=5000, debug='true')

И принимаю d3.js
var width = 900, height = 600;

var projection = d3.geo.mercator();

			
var svg = d3.select("body").append("svg")
        .attr("width", width)
        .attr("height", height);
var path = d3.geo.path().projection(projection);
var g = svg.append("g");

    d3.json("/get_data", function(error, data_json){
        g.selectAll("content")
	    .data(topojson.object(data_json, data_json.objects.countries)
	        .geometries)
	.enter()
		.append("content")
		.attr("d", path)
    });

Cоответсвенно ошибка data_json is undefined. Как принять данные d3.js ?
  • Вопрос задан
  • 1007 просмотров
Пригласить эксперта
Ответы на вопрос 2
@agershun
Сейчас поменялись форматы функций, и json() возвращает Promise с данными, которые надо ловить с помощью функции then():

d3.json("/get_data")
.then(function(data_json){
. . .
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы