天天看點

1.使用python從資料庫讀資料後自動生成較為美觀的html檔案

1.用 pandas.DataFrame.to_html() 可以直接轉成 html 的 table,

一般處理資料或者報表我習慣使用 pandas,pandas.DataFrame 很友善處理二維表、excel等,也可以很友善地把從資料庫擷取的資料轉成 DataFrame 結構。用 pandas.DataFrame.to_html() 可以直接轉成 html 的 table,不過要控制前端顯示還是得用 css,或者直接用 bootstrap 架構。

2.不過要控制前端顯示還是得用 css,或者直接用 bootstrap 架構

下面的回答隻管你如何美化html,不管你如何生成html.

html 是超文本,可以由css 和Javascript 來控制html 的外觀。

推薦用Bootstrap

Bootstrap

http://getbootstrap.com/

3.jinja2

需要任意py36

#pip install -U Incantation

pip install Incantation-0.3.3-py3-none-any.whl

參考https://github.com/thautwarm/Incantation  doc

解決Python查詢Mysql資料庫資訊亂碼問題

#最後通過嘗試将  json  子產品導入,利用其 dumps 方法,問題得到解決

http://blog.csdn.net/mori66/article/details/54669232

https://www.cnblogs.com/jzss/p/5567318.html

py生成html

官網例子

<a href="https://github.com/thautwarm/Incantation">https://github.com/thautwarm/Incantation</a>

<code>#!/usr/bin/python</code>

<code># -*-coding:utf-8-*-</code>

<code>import</code> <code>os</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>pymysql</code>

<code>import</code> <code>json</code>

<code>from</code> <code>incantation.Module.CSS.Grid </code><code>import</code> <code>container, col, row, grid, section</code>

<code>from</code> <code>incantation.Module.CSS.Color </code><code>import</code> <code>Indigo</code>

<code>from</code> <code>incantation.Module.CSS.Helpers </code><code>import</code> <code>align, left_align, right_align, center_align</code>

<code>from</code> <code>incantation.Module.CSS.Media </code><code>import</code> <code>video_container</code>

<code>from</code> <code>incantation.Module </code><code>import</code> <code>abst</code>

<code>from</code> <code>incantation.Module </code><code>import</code> <code>blockquote</code>

<code>from</code> <code>incantation.Module.CSS.Table </code><code>import</code> <code>table</code>

<code>from</code> <code>incantation.Module.abst </code><code>import</code> <code>default_conf, gen_helper, Seq</code>

<code>from</code> <code>incantation.template </code><code>import</code> <code>Page</code>

<code>from</code> <code>incantation.Module.Component.Badges </code><code>import</code> <code>collections, dropdown, badge, collapsible</code>

<code>from</code> <code>incantation.Module.Component.Icons </code><code>import</code> <code>icon</code>

<code>from</code> <code>incantation.Module.Component.Button </code><code>import</code> <code>FAB, raised</code>

<code>from</code> <code>incantation.Module.Component.Form </code><code>import</code> <code>form, input_field</code>

<code>from</code> <code>incantation.Module.Component.Navbar </code><code>import</code> <code>navbar</code>

<code>def</code> <code>myPage(</code><code>list</code><code>):</code>

<code>    </code><code>main </code><code>=</code> <code>container()</code>

<code>    </code><code>title </code><code>=</code> <code>blockquote(</code><code>"伺服器對應部署的應用資訊"</code><code>)</code>

<code>    </code><code>users </code><code>=</code> <code>table([</code><code>"ip"</code><code>, </code><code>"環境"</code><code>,</code><code>"應用類型"</code><code>,</code><code>"應用名稱"</code><code>,</code><code>"額外描述"</code><code>],</code><code>list</code><code>)</code>

<code>    </code><code>main.contains(Seq(</code>

<code>            </code><code>col(Seq(title, users),grid(l</code><code>=</code><code>8</code><code>, s</code><code>=</code><code>8</code><code>, m</code><code>=</code><code>8</code><code>)),</code>

<code>    </code><code>))</code>

<code>    </code><code>page </code><code>=</code> <code>Page(main)</code>

<code>    </code><code>page.write(to</code><code>=</code><code>'../ip.html'</code><code>)</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>iplist_all </code><code>=</code> <code>[]</code>

<code>    </code><code>conn </code><code>=</code> <code>pymysql.connect(</code><code>"172.1.1.1"</code><code>, </code><code>"root"</code><code>, </code><code>"password"</code><code>, </code><code>"cmdb"</code><code>,charset</code><code>=</code><code>'utf8'</code><code>)</code>

<code>    </code><code>##此處要指定charset為utf-8(一般資料庫編碼都是utf8或utf8mb4之類),否則讀取出的中文會亂碼</code>

<code>    </code><code>cur </code><code>=</code> <code>conn.cursor()</code>

<code>    </code><code>#cur.execute("SELECT ip,env from hosts ORDER BY 2, 1")</code>

<code>    </code><code>cur.execute(</code><code>"SELECT a.ip, a.env, b.item_type, b.item_name, b.description FROM HOSTS a LEFT JOIN applications b ON a.ip = b.ip ORDER BY 2,1"</code><code>)</code>

<code>    </code><code>for</code> <code>row </code><code>in</code> <code>cur.fetchall():</code>

<code>        </code><code>iplist </code><code>=</code><code>[]</code>

<code>        </code><code>iplist </code><code>=</code> <code>list</code><code>(row)</code>

<code>        </code><code># iplistj = json.dumps(iplist,ensure_ascii=False)</code>

<code>        </code><code># print(iplist)</code>

<code>        </code><code>iplist_all.append(iplist)</code>

<code>    </code><code>myPage(iplist_all)</code>

<code>    </code><code>cur.close()</code>

沒有什麼邏輯,模拟即可。

2.拷貝static,其實github已經實作,隻要按照那個目錄排列即可

點選ip,顯示效果

本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/2047983,如需轉載請自行聯系原作者