我试图按照https://github.com/talpor/django-dashing/使用django-dashing的指示来实现仪表板。从MySQL中提取数据以使用python在仪表板上显示django-dashing
到目前为止,我已经成功地定制了自己的小部件,并在自己的Web服务器上显示了一些随机数据,而如果我想从数据库(MySQL)中抽出一些真实数据并显示,我不知道从哪里开始。 (如在哪里做数据库连接,等..)
任何人都可以告诉我我应该遵循执行它的步骤?
我试图按照https://github.com/talpor/django-dashing/使用django-dashing的指示来实现仪表板。从MySQL中提取数据以使用python在仪表板上显示django-dashing
到目前为止,我已经成功地定制了自己的小部件,并在自己的Web服务器上显示了一些随机数据,而如果我想从数据库(MySQL)中抽出一些真实数据并显示,我不知道从哪里开始。 (如在哪里做数据库连接,等..)
任何人都可以告诉我我应该遵循执行它的步骤?
如果它仍然相关,您可以先用sqlalchemy连接到数据库。
import sqlalchemy as sq
from sqlalchemy.engine import url as sq_url
db_connect_url = sq_url.URL(
drivername='mysql+mysqldb',
username=DB_username,
password=DB_password,
host=DB_hostname,
port=DB_port,
database=DB_name,
)
engine = sq.create_engine(db_connect_url)
从那里你可以通过检查引擎上的可用方法来操作数据。我通常做的就是在这种情况下使用熊猫。
import pandas as pd
df = pd.read_sql_table(table_name, engine)
我也不得不这样做最近....我设法让它排序 - 但它有点笨重。
我在一个单独的项目中创建了一个单独的CherryPy REST Api。入口点看起来像
@cherrpy.expose
def web_api_to_call(self, table,value):
#Do SQL Query
return str(sql_table_value)
然后在Django中创建一个新的应用程序,然后创建一个Widget.py。在Widget.py里面我写了这样的东西。
import requests
class webquery(NumberWidget):
classparams=[("widget1","web_api_to_call","table","values"),
("widget2","web_api_to_call","table2","values2"),
("widget3","web_api_to_call","table3","values3")]
def myget(self):
for tup in self.classparams:
if tup[0]==type(self).__name__:
url=tup[1]
table=tup[2]
value=tup[3]
url = "http://127.0.0.1:8000/"+url
# Do Web Call Error Checking Omitted
return requests.get(url,params={"table":table,"values":value)}).text()
def get_value(self):
#Override default
return self.my_get()
#Now create new Widgets as per the static definition at the top
class widget1(web query):
id=1
class widget2(web query):
id=1
class widget3(web query):
id=1
现在只需要添加新部件 - 像往常一样在urls.py,然后潇洒的-config.js和你做。
希望这可以帮助别人。