我試圖按照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和你做。
希望這可以幫助別人。