Viv*_*nda 2 python postgresql psycopg2 d3.js
之前我使用CSV来存储数据,然后制作图表。但现在我想知道如何使用d3.js从PostgreSQL获取数据。
如果有人知道请帮助我,我是 PostgreSQL 的全新用户。
import psycopg2
import sys
from flask import Flask,render_template
import os
os.chmod("/home/dell/Charts/static/data/data.csv", 0o777)
con = None
con = psycopg2.connect("host='localhost' dbname='mydb' user='postgres' password='Password'")
cur = con.cursor()
cur.execute("""COPY data_lc TO '/home/dell/Charts/static/data/data.csv' DELIMITER ',' CSV HEADER;""")
cur.close()
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常
但我想知道有没有办法通过D3.js直接从PostgreSQL获取数据
html代码
<div class="panel panel-default">
<div class="panel-heading">
<h4>LineChart</h4>
</div>
<div class="panel-body">
<div id="linechart"></div>
</div>
</div>
<script src="static/js/Linechart.js"></script>
Run Code Online (Sandbox Code Playgroud)
您需要在flask中创建一个视图来查询数据库并将结果作为json返回
import psycopg2
import sys
from flask import Flask,render_template
from flask import jsonify
@app.route('/data')
def send_data():
con = psycopg2.connect("host='localhost' dbname='mydb' user='postgres' password='Password'")
cur = con.cursor()
cur.execute("""select * from data_lc""")
data = [col for col in cur]
cur.close()
return jsonify(data)
Run Code Online (Sandbox Code Playgroud)
然后使用 d3 你可以调用 url
d3.json("https://your_flas_kapp.com/data").then(...)
Run Code Online (Sandbox Code Playgroud)