天天看点

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,如需转载请自行联系原作者