代码之家  ›  专栏  ›  技术社区  ›  Ramy

在python中以xml格式返回sql查询

  •  3
  • Ramy  · 技术社区  · 16 年前

    当我刚开始在我现在工作的公司工作时,我创建了一个java应用程序,可以运行成批的jasper报告。为了确定要为报表集中的每个报表使用哪些参数,我运行了一个sql查询(在sqlserver上)。我编写了一个应用程序,以获取一个xml文件,其中包含一组参数,用于生成集合中的每个报表。因此,我的过程实际上变成了三个步骤:

    1. 运行sql查询并以XML格式返回结果(使用“for XML auto”)
    2. 使用最终的xml文件运行java应用程序

    可以想象,我想用python完成这些步骤,但我不太确定如何开始。我知道如何用Python运行SQL查询。我看到了大量关于如何使用Python编写自己的xml文档的文档。我甚至看到了python中xsl转换的文档。

    谢谢, _拉米

    1 回复  |  直到 16 年前
        1
  •  1
  •   tgray    16 年前

    我可以想象,使用“FOR XML AUTO”执行sql查询将得到一个包含一个记录(XML)的记录集。然后您将检索第一条记录并从那里继续应用程序。

    pyodbc

    cursor.execute("select user_name from users where user_id=? for xml auto", userid)
    xml = cursor.fetchone()
    if xml:
        # do your xsl transformation and other processing here...
    

    编辑

    我在测试中选择了很多字段,并且(我认为)设法超过了行对象的缓冲区大小,所以它分割了记录。

    根据我的测试,我需要的代码是:

    cursor.execute("select user_name from users where user_id=? for xml auto", userid)
    rows = cursor.fetchall()
    xml = ''.join(row[0] for row in rows)