首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Flask对HTML页面表的SQL查询

Python Flask对HTML页面表的SQL查询
EN

Stack Overflow用户
提问于 2019-09-28 22:00:17
回答 1查看 2.3K关注 0票数 0

我最近启动了一个小型web应用程序项目,使用nmap扫描网络并将表格结果拉回到UI(html页面)。发现脚本运行良好,并将结果发送到SQL数据库。我使用的第二个脚本用于从SQL中提取结果,并以HTML格式创建表。我已经能够使用Jinja2将结果转换成超文本标记语言,但是格式化非常混乱。已经过了几天了,我真的很纠结,所以我想我应该寻求一些帮助。带有SQL查询的application.py代码如下:‘from flask import Flask,render_template from jinja2 import Template import pandas pd import pandas import pyodbc import urllib from sqlalchemy import create_engine

代码语言:javascript
复制
app = Flask(__name__)

@app.route('/')
def index():
return render_template('/layout.html')

@app.route('/Dashboard')
def Dashboard():
return render_template('/Dashboard.html')

@app.route('/Network')
def Network():
params = 'DRIVER={ODBC Driver 17 for SQL Server};' \
         'SERVER=localhost;' \
         'PORT=1433;' \
         'DATABASE=;' \
         'UID=SA;' \
         'PWD=reallyStrongPwd123;'

params = urllib.parse.quote_plus(params)

db = create_engine('mssql+pyodbc:///?odbc_connect=%s' % params)
df = pandas.read_sql_query("SELECT * FROM dbo.discovery", con = db ) #hosts

df = pandas.DataFrame(df, columns=.      
['host','hostname','hostname_type','protocol','port',
'name','state','product','extrainfo','reason','version','conf','cpe'])

return render_template('/Network.html', df=df)


@app.route('/Vulnerabilities')
def Vulnerabilities():
return render_template('/Vulnerabilities.html')

if __name__ == "__main__":
app.run(debug=True)
'''

HTML页面代码如下:(保留大部分页面)

代码语言:javascript
复制
<table>
<tr> {{ df }} </tr>
</table>

由于某些原因,我无法在此处附加图像,因此以下是HTML页面中的输出

代码语言:javascript
复制
host hostname hostname_type protocol port name state \ 0 10.0.0.1 None None tcp 22 ssh filtered 1 10.0.0.1 None None tcp 23 telnet filtered 2 10.0.0.1 None None tcp 53 domain open 3 10.0.0.1 None None tcp 80 http open 4 10.0.0.1 None None tcp 443 http open 5 10.0.0.1 None None tcp 49152 upnp open 6 10.0.0.131 None None tcp 80 upnp open 7 10.0.0.131 None None tcp 139 tcpwrapped open 8 10.0.0.131 None None tcp 445 microsoft-ds open 9 10.0.0.131 None None tcp 515 printer open 10 10.0.0.131 None None tcp 631 upnp open 11 10.0.0.131 None None tcp 9100 jetdirect open 12 10.0.0.157 None None tcp 62078 iphone-sync open 13 10.0.0.218 None None tcp 1433 ms-sql-s open 14 10.0.0.254 None None tcp 49152 upnp open product extrainfo \ 0 None None 1 None None 2 dnsmasq None 3 lighttpd None 4 lighttpd None 5 Portable SDK for UPnP devices Linux 3.12.14; UPnP 1.0 6 Epson Stylus NX230 printer UPnP UPnP 1.0; Epson UPnP SDK 1.0 7 None None 8 None None 9 None None 10 Epson Stylus NX230 printer UPnP UPnP 1.0; Epson UPnP SDK 1.0 11 None None 12 None None 13 Microsoft SQL Server vNext tech preview None 14 Cisco-Linksys E4200 WAP upnpd UPnP 1.0 reason version conf cpe 0 no-response None 3 None 1 no-response None 3 None 2 syn-ack 2.78 10 cpe:/a:thekelleys:dnsmasq:2.78 3 syn-ack None 10 cpe:/a:lighttpd:lighttpd 4 syn-ack None 10 cpe:/a:lighttpd:lighttpd 5 syn-ack 1.6.22 10 cpe:/o:linux:linux_kernel:3.12.14 6 syn-ack None 10 cpe:/o:linux:linux_kernel 7 syn-ack None 8 None 8 syn-ack None 10 None 9 syn-ack None 10 None 10 syn-ack None 10 cpe:/o:linux:linux_kernel 11 syn-ack None 3 None 12 syn-ack None 3 None 13 syn-ack 14.00.3048 10 cpe:/a:microsoft:sql_server 14 syn-ack None 10 cpe:/h:cisco:e4200 

然而,输出结果导致了这种混乱。所以我的问题是,我怎样才能把它变成一个表格,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 22:42:05

我还不能添加评论,所以我只会假设我是正确的,如果我不能纠正我…无论如何,我理解您所面临的问题是渲染pandas数据框在HTML端变得非常混乱……尝试添加:

代码语言:javascript
复制
return render_template('simple.html',  tables=[df.to_html(classes='data', header="true")])

至于参考资料,How to show a pandas dataframe into a existing flask html table? https://pythonexamples.org/pandas-render-dataframe-as-html-table/希望这将是有帮助的(:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58147040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档