在d3可视化中访问MySQL数据库
我需要一些关于d3和MySQL的帮助。以下是我的问题:
我在MySQL中存储了一些数据(比如:关键词及其出现频率)。现在我想用d3来可视化这些数据。根据我对d3的了解,它需要一个json文件作为输入。我的问题是:我该如何从d3脚本中访问这个MySQL数据库呢?我想到了一种方法:
使用Python连接数据库,并将数据转换成json格式。然后把这个数据保存到一个.json文件中。
在d3中读取这个json文件作为输入,并用它进行可视化。
有没有其他方法可以直接用d3将MySQL中的数据转换成.json格式?我们能否从d3连接到MySQL并读取数据呢?
非常感谢!
3 个回答
我偶然发现了一个详细的教程,作者是Jerome Cukier,标题是“在mySql数据库中使用d3”。这个教程似乎能解答你的问题:http://www.jeromecukier.net/blog/2012/01/02/using-d3-with-a-mysql-database/
简单来说,你确实需要一个php(或者perl,或者python)脚本来从服务器上的数据库获取数据。
d3
是一个在客户端运行的 JavaScript 库,而 MySQL 数据库是应该在服务器端运行的。
d3
不能直接连接到 MySQL 数据库,更别提把数据转换成 JSON 格式了。你想的那种方法(步骤 1 和 2)其实是应该这样做的。
下面是一个PHP脚本,你可以把它保存为一个文件(比如叫做'getdata.php'),然后在你的HTML文件中通过D3代码来访问这个文件。调用这个文件后,它会从你的MySQL数据库中返回数据,格式是json(只要数据库服务器不在你的域外就可以)。
<?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);
?>
当然,你需要填写合适的用户名、密码、主机和数据库的详细信息。你还需要写一个合适的查询语句,以便返回'日期时间'和'读数'的数据。大概是这样的(这只是个猜测);
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