在Python中以XML格式返回SQL查询
我刚开始在现在的公司工作时,创建了一个Java应用程序,用来批量处理jasper-reports报告。为了确定每个报告需要使用哪些参数,我会运行一个SQL查询(在SQL Server上)。我写的这个应用程序可以接收一个XML文件,里面包含了要生成的每个报告的参数。因此,我的整个流程实际上分为三个步骤:
- 运行SQL查询,并将结果以XML格式返回(使用'for XML auto')。
- 将SQL查询的结果通过XSLT转换,这样生成的XML格式就能被我写的Java应用程序友好地识别。
- 用最终生成的XML文件运行Java应用程序。
你可以想象,我希望能用Python来完成这些步骤,但我不太确定该从哪里开始。我知道如何在Python中运行SQL查询,也看到很多关于如何用Python写自己的XML文档的资料,甚至还有关于Python中XSL转换的文档。
我最大的疑问是,如何通过Python获取SQL查询的结果并转换成XML格式。任何建议都会非常有帮助。谢谢!
1 个回答
1
我想,如果你用 '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)