SQL-запрос Python Flask к таблице страниц HTML - PullRequest
0 голосов
/ 28 сентября 2019

Я недавно запустил небольшой проект веб-приложения, который использует nmap для сканирования сети и возврата результатов таблицы обратно в пользовательский интерфейс (html-страница).Сценарий обнаружения отлично работает и отправляет результаты в базу данных SQL.Второй скрипт, с которым я работал, предназначен для извлечения результатов из SQL и создания таблицы в HTML.Я смог получить результаты в HTML с помощью Jinja2, но форматирование все испортилось.Прошло несколько дней, и я действительно борюсь с этим, поэтому я подумал, что попросить некоторую помощь.Код application.py с SQL-запросом приведен ниже: '' 'из колбы импорта Flask, render_template из jinja2 import Шаблон импорта pandas как pd import pandas импорт pyodbc import urllib из sqlalchemy import create_engine

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код страницы следующим образом: (щадя большую часть страницы)

<table>
<tr> {{ df }} </tr>
</table>

Я не могу прикрепить изображения здесь по какой-то причине, поэтому ниже приведен вывод на странице HTML

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 

Вывод однакоприводит к этому беспорядку.Итак, мой вопрос: как я могу превратить это в таблицу и что я делаю не так?

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2019

У меня еще нет возможности добавлять комментарии, поэтому я просто предположу, что я в порядке с тем, куда я иду, и если я не исправлю меня ... В любом случае, проблема, с которой я понял, заключается в том, что рендерингфрейм данных pandas становится все беспорядочным на стороне HTML ... Попробуйте добавить:

return render_template('simple.html',  tables=[df.to_html(classes='data', header="true")])

как для ссылок Как показать фрейм данных pandas в существующую html-таблицу фляги? https://pythonexamples.org/pandas-render-dataframe-as-html-table/ надеюсь, что это будет полезно (:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...