2017-07-27 57 views
0

我試圖按照https://github.com/talpor/django-dashing/使用django-dashing的指示來實現儀表板。從MySQL中提取數據以使用python在儀表板上顯示django-dashing

到目前爲止,我已經成功地定製了自己的小部件,並在自己的Web服務器上顯示了一些隨機數據,而如果我想從數據庫(MySQL)中抽出一些真實數據並顯示,我不知道從哪裏開始。 (如在哪裏做數據庫連接,等..)

任何人都可以告訴我我應該遵循執行它的步驟?

回答

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) 
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,然後瀟灑的-config.js和你做。

希望這可以幫助別人。

相關問題