2
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),同时仍位于同一表行中。

4

0 回答 0