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