множественное значение из mysql в reportlab - PullRequest
0 голосов
/ 04 июля 2018

У меня проблема с тем, что я не могу показать свою вторую запись в таблице MySQL. В отчете только одна запись подряд, а вторая не отображается в файле PDF. я использую reportlab для генератора отчетов на python 2.7

это мой код, который я могу еще исправить:

def nilaisql():
  rpt = raw_input("input NPM : ")
  sql = "select nama, tanggal, jamMasuk from t_"+rpt
  curs.execute(sql)
  result = curs.fetchall()
  for row in result:
      c = canvas.Canvas("Sampelone.pdf")
      c.drawString(250, 700, str(row[0]))
      c.save()
  os.system("Sampelone.pdf")

это моя запись на mysql. Я хочу показать запись второй строки, но PDF просто показывает запись первой строки

должен показывать запись второго ряда

и это результат моего pdf-файла

Я застрял здесь, и если вы знаете что-то, я очень благодарен, что вы можете поделиться решением здесь

1 Ответ

0 голосов
/ 29 июля 2018
for row in result:
  c = canvas.Canvas("Sampelone.pdf")
  c.drawString(250, 700, str(row[0]))
  c.save()

то, что делает ваш фрагмент кода, создает новый файл и записывает содержимое вашей переменной row в файл pdf, а c.save сохраняет его. На следующей итерации этот же файл воссоздается и остается пустым, а исходный файл перезаписывается этим пустым файлом, и печатается содержимое row, поэтому в нем всегда будет отображаться только запись первой строки.
Это должно работать нормально. Увеличивайте или уменьшайте значение y в соответствии с вашим использованием и высотой документа.

c = canvas.Canvas("Sampelone.pdf") #creates a pdf
for row in result:   
  c.drawString(250, y, str(row[0])) #writes data at given co-ordinates
c.save() #saves the pdf

Таким образом, вы можете увидеть все записи строк в формате PDF.

Но эта практика не считается хорошей, вы всегда должны помещать свои данные в такой поток. .

from reportlab.lib import styles
from reportlab.platypus import SimpleDocTemplate, Paragraph


def nilaisql():
    pdfname = 'mydoc.pdf'
    doc = SimpleDocTemplate(
        pdfname
    )
    style = styles["Normal"]
    story = []


    rpt = raw_input("input NPM : ")
    sql = "select nama, tanggal, jamMasuk from t_" + rpt
    curs.execute(sql)
    result = curs.fetchall()

    for row in result:
        story.append(Paragraph(row, style))

    doc.build(
        story
    )

    os.system("Sampelone.pdf")

Подробнее о текучих средах в reportlab-userguide

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