множественное значение из mysql в reportlab

0

У меня проблема, я не могу показать свою вторую запись в таблице mysql. Отчет, показывающий только 1 запись в строке, а вторая не отображается в файле 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 файла

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

Теги:
python-2.7
reportlab

1 ответ

0
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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню