Почему мой цикл не показывает хороший результат в HTML? - PullRequest
0 голосов
/ 28 сентября 2018

У меня проблема с созданием циклов, чтобы показать мне мои данные из базы данных.Все отлично работает с разделом, где он должен отображать цикл в HTML.Когда я просто печатаю данные, они отображаются хорошо, но когда их нужно отобразить в формате html, они отображаются только один раз и показывают мне только последнюю запись

код:

cursor.execute("SELECT * FROM telImenik ")



self.htmlKod = ""
self.num_rows = 0
for i in range(0, 126):
    row = cursor.fetchone()
    print(row[0])
    self.htmlKod = """<tr><td style='padding:5px;'> {L} </td>
                            <td style='padding:5px;'>{P}</td>
                            <td style='padding:5px;'>{I}</td>
                            <td style='padding:5px;'>{T}</td>
                            <td style='padding:5px;'>{Lok}</td></tr>



                         """.format(L=row[0], P=row[1], I=row[2], T=row[3], Lok=row[4])

    self.num_rows = self.num_rows + 1

self.document = QTextDocument()

self.html = """
       <!DOCTYPE html><html lang='en'>
       <title>BS Admin</title>
       <head>
       <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
       </head>
       <body style='margin:0;'>  
       <table width='100%'  border=0 style='color:black;font-weight:bold;'>
       <tr>
       <td width='50%'>Naziv<br>VAdresa</td>
       <td width='50%'><img src='ikonice/logo.png' align='right' ></td>
       </tr>
       </table>  <br>
       <center><h1>POdaci</h1></center><br>

       <table width='100%'  border=1 style='color:black;font-weight:bold;border-color:silver;' cellspacing=0 cellpadding=0>
       """ + self.htmlKod + """
       </table>
       </body></html>
       """.format('', '')

cursor.close()
konekcija.close()

1 Ответ

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

Ваш цикл for заменяет строку на каждой итерации:

self.htmlKod = ""
for i in range(0, 126):
    # ...
    self.htmlKod = """...""".format(...)

self.htmlKod = не объединяет строки, поэтому в итоге выигрывает только последнее присвоение.

Но скореезатем используйте += для объединения строк, создайте список , затем используйте str.join() в конце.Это более эффективно, поскольку позволяет избежать повторных копий растущей строки каждый раз, когда вы добавляете больше текста:

rows = []
for i in range(0, 126):
    # ...
    row.append("""...""".format(...))

self.htmlKod = "".join(rows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...