在d3可视化中访问MySQL数据库

时间:2013-02-04 02:22:34

标签: javascript python mysql d3.js data-visualization

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

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

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

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

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

    非常感谢!

3 个答案:

答案 0 :(得分:5)

以下是一个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”和“reading”的数据。 有些东西(这只是猜测);

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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