4

我需要一些关于 d3 和 MySQL 的帮助。以下是我的问题:

我将数据存储在 MySQL 中(例如:关键字及其频率)。我现在想使用 d3 将其可视化。据我对 d3 的了解,它需要 json 文件作为输入。我的问题是:如何从 d3 脚本访问这个 MySQL 数据库?我能想到的一种方法是:

  1. 使用 Python 连接数据库并将数据转换为 json 格式。将其保存在一些 .json 文件中。

  2. 在 d3 中,读取这个 json 文件作为输入并在可视化中使用它。

有没有其他方法可以直接使用 d3 将 MySQL 中的数据转换成 .json 格式?我们可以从 d3 连接到 MySQL 并读取数据吗?

非常感谢!

4

3 回答 3

6

以下是一个 php 脚本,您应该可以将其保存为文件(假设您将其称为“getdata.php”),可以从您的 HTML 文件中访问,其中包含您的 D3 代码。调用时,它将以 json 格式从您的 MySQL 数据库返回数据(只要数据库服务器不在您的域之外);

<?php
    $username = "******"; 
    $password = "******";   
    $host = "******";
    $database="***dbase_name***";

    $server = mysql_connect($host, $user, $password);
    $connection = mysql_select_db($database, $server);

    $myquery = "
    query here
    ";

    $query = mysql_query($myquery);

    if ( ! $myquery ) {
        echo mysql_error();
        die;
    }

    $data = array();

    for ($x = 0; $x < mysql_num_rows($query); $x++) {
        $data[] = mysql_fetch_assoc($query);
    }

    echo json_encode($data);     

    mysql_close($server);
?>

显然,您需要为用户名、密码、主机和数据库输入适当的详细信息。您还需要为您的数据包含一个适当的查询,以便它返回“dateTimeTaken”和“阅读”的数据。类似的东西(这只是一个猜测);

SELECT `dateTimeTaken`, `reading` FROM `tablename`

然后,当您读取您的 json 文件时,您将对您将在 json 中读取的代码使用以下语法;

d3.json("getdata.php", function(error, data) {

希望这接近您正在寻找的内容。我已经在本地对其进行了测试,这一切似乎都有效..

我已经整理了一篇文章来介绍简单 WAMP 服务器的本地安装并在此处从 d3.js 对 MySQL 数据库设置查询http://www.d3noob.org/2013/02/using-mysql-database -as-source-of-data.html

于 2013-02-04T08:57:32.540 回答
1

d3是一个在客户端运行的 javascript 库,而 MySQL 数据库应该在服务器端运行。
d3无法连接MySQL数据库,更别说转换成json格式了。您认为可能的方式(步骤 1 和 2)是您应该做的。

于 2013-02-04T02:46:48.987 回答
1

我偶然发现了 Jerome Cukier 的详细教程,标题为“将 d3 与 mySql 数据库一起使用”。它似乎回答了你的问题: http: //www.jeromecukier.net/blog/2012/01/02/using-d3-with-a-mysql-database/

简而言之,您确实需要一个 php(或 perl,或 python)脚本来从服务器端的数据库中获取您的数据。

于 2013-03-27T01:23:12.513 回答