gpt4 book ai didi

python - 从mysql到reportlab的多个值

转载 作者:行者123 更新时间:2023-11-29 17:22:36 24 4
gpt4 key购买 nike

我有一个问题,无法在 mysql 表中显示我的第二条记录。该报告仅连续显示 1 条记录,第二条记录未显示在 pdf 文件中。我在 python 2.7 上使用 reportlab 生成报告

这是我的代码,我还无法修复:

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 仅显示第一行记录

it should showing the second row record

and this is the result on my pdf file

我被困在这里,如果你知道什么,我真的很感激你可以在这里分享解决方案

最佳答案

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中的所有行记录。

但是这种做法并不被认为是好的,您应该始终像这样将数据放入 flowable 中。 .

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 中了解有关可流动性的更多信息

关于python - 从mysql到reportlab的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51176000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com