使用python django-dashing从MySQL中提取数据以显示在仪表板上

时间:2017-07-27 08:27:48

标签: python mysql django dashing

我试图按照https://github.com/talpor/django-dashing/使用django-dashing的说明来实现仪表板。

到目前为止,我已经成功定制了我的小部件并在我自己的Web服务器上显示了一些随机数据,而我不知道从哪里开始,如果我想从DB(MySQL)中提取一些真实数据并显示。 (比如在哪里做DB连接,等等)

有人能告诉我实施它应遵循的步骤吗?

2 个答案:

答案 0 :(得分:0)

如果它仍然相关,您可以先使用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)

答案 1 :(得分:0)

我最近也必须这样做....我设法让它排序 - 但它有点过于笨重。

我在一个单独的项目中创建了一个单独的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中那样,然后在dashing-config.js中你就完成了。

希望这有助于某人。