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

时间:2010-06-01 19:14:00

标签: python sql xml

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

  1. 运行sql查询并以XML格式返回结果(使用'for XML auto')
  2. 通过XSLT转换运行sql查询的结果,这样xml的格式就像我写的java应用程序一样友好。
  3. 使用最终的xml文件运行java应用程序
  4. 你可以想象,我想做的是在python中完成这些步骤,但我不太清楚如何开始。我知道如何在Python中运行SQL查询。我看到很多关于如何使用Python编写自己的xml文档的文档。我甚至在python中看到了xsl转换的文档。

    最大的问题是如何通过python以XML格式获取sql查询的结果。任何和所有指针都非常有价值。 谢谢, _Ramy

1 个答案:

答案 0 :(得分:0)

我认为执行使用'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)