使用python从数据库读数据后自动生成较为美观的html文件该怎么处理 需要使用哪些库
https://www.zhihu.com/question/67499663
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
官网例子
#pip install -U Incantation
pip install Incantation-0.3.3-py3-none-any.whl
#!/usr/bin/python
# -*-coding:utf-8-*-
import os
import sys
import pymysql
import json
from incantation.Module.CSS.Grid import container, col, row, grid, section
from incantation.Module.CSS.Color import Indigo
from incantation.Module.CSS.Helpers import align, left_align, right_align, center_align
from incantation.Module.CSS.Media import video_container
from incantation.Module import abst
from incantation.Module import blockquote
from incantation.Module.CSS.Table import table
from incantation.Module.abst import default_conf, gen_helper, Seq
from incantation.template import Page
from incantation.Module.Component.Badges import collections, dropdown, badge, collapsible
from incantation.Module.Component.Icons import icon
from incantation.Module.Component.Button import FAB, raised
from incantation.Module.Component.Form import form, input_field
from incantation.Module.Component.Navbar import navbar
def myPage(list):
main = container()
title = blockquote("服务器对应部署的应用信息")
users = table(["ip", "环境","应用类型","应用名称","额外描述"],list)
main.contains(Seq(
col(Seq(title, users),grid(l=8, s=8, m=8)),
))
page = Page(main)
page.write(to='../ip.html')
if __name__ == '__main__':
iplist_all = []
conn = pymysql.connect("172.1.1.1", "root", "password", "cmdb",charset='utf8')
##此处要指定charset为utf-8(一般数据库编码都是utf8或utf8mb4之类),否则读取出的中文会乱码
cur = conn.cursor()
#cur.execute("SELECT ip,env from hosts ORDER BY 2, 1")
cur.execute("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")
for row in cur.fetchall():
iplist =[]
iplist = list(row)
# iplistj = json.dumps(iplist,ensure_ascii=False)
# print(iplist)
iplist_all.append(iplist)
myPage(iplist_all)
cur.close()
没有什么逻辑,模拟即可。
2.拷贝static,其实github已经实现,只要按照那个目录排列即可
点击ip,显示效果