cur.execute("SELECT * FROM services WHERE host_id = " + str(row['id']))
services = cur.fetchall()
with doc.create(LongTabu("l l l l l",)) as data_table:
data_table.add_hline()
data_table.add_row(["Port (service)", "Service", "Protocol", "info", 'CVEs'])
data_table.add_hline()
data_table.end_table_header()
data_table.add_hline()
data_table.add_row((MultiColumn(5, align='r',
data='Continued on Next Page',),), strict=True)
data_table.add_hline()
data_table.end_table_footer()
#data_table.add_hline()
#data_table.add_row((MultiColumn(5, align='r',
# data='Not Continued on Next Page'),))
data_table.add_hline()
data_table.end_table_last_footer()
cur.execute("SELECT * FROM services WHERE host_id = " + str(row['id']))
services = cur.fetchall()
for svc in services:
cur.execute("SELECT * FROM refs WHERE id IN (SELECT ref_id FROM vulns_refs WHERE vuln_id IN (SELECT id FROM vulns WHERE service_id = %s ))", (svc['id'],))
CVEs = cur.fetchall()
CVElist = [c['name'] for c in CVEs]
for count in CVElist:
CVEstring = ", ".join(CVElist)
CVEstring = textwrap.wrap(textwrap.fill(CVEstring.replace("’" ,'\n')))
data_table.add_row([svc['port'],svc['name'] , svc['proto'] , svc["info"], CVEstring], strict=True)
[以上代码的结果][1] [1]:https://i.stack.imgur.com/MRYbK.png
如上图所示,字符串继续运行,而不是创建新行(列 CVE),同时仍位于同一表行中。