如何在python中读取sql查询输出
Posted
技术标签:
【中文标题】如何在python中读取sql查询输出【英文标题】:how to read sql query output in python 【发布时间】:2013-10-11 10:37:50 【问题描述】:我在我的 Python 代码中使用 sqlplus 连接到数据库并执行查询并读取结果。任何人都可以帮助我如何从 sysout 读取数据。
我的代码是这样的:
stdout = os.popen(cmd)
for line in stdout:
print line
stdout.close()
但我可以看到每三行标题重复的结果如下:
Name ID
---- ---
AB 1
AC 2
AD 3
Name ID
---- ---
BC 1
BD 2
像这样。
是否有可能控制这一点,不重复标题,标题应该只出现一次,它应该只出现在开头。
【问题讨论】:
我不太明白那是什么。哪些是列标题,哪些是值? 名称、ID 是该表中的列 您可以发布您的查询吗? 从NameTable中选择名称、ID; 如果单独运行sqlplus,输出是否相同?如果是这样,你不能简单地每 5 行跳过 2 行吗? 【参考方案1】:你在做什么:
启动独立程序,查询数据库并将结果打印到标准输出 读取该程序的标准输出并考虑对其进行解析。你应该做什么:
在 Python 中使用数据库 API。此页面包含您可以使用的 Oracle DB API 列表:https://wiki.python.org/moin/Oracle
使用真正的 API 来查询数据库会带来很多好处,例如更好地处理错误、可能更好的性能以及代码的未来维护者不会对您感到不满。
【讨论】:
是的,我同意,但是我们在使用这些方面有一些限制,所以我们使用的是 sqlplus。 有哪些限制?也许我们可以解决这个问题。 我们用sqlplus可以达到预期的行为,所以不建议安装其他的,我们需要证明他们用sqlplus不能实现,然后经过必要的批准才安装。我相信我们可以用 sqlplus 实现同样的效果,而且在我们提出的时候已经发生过。 在这种情况下,您的 sqlplus 版本是否具有此处所述的“-MARKUP html ON”选项:docs.oracle.com/cd/B10501_01/server.920/a90842/ch4.htm?如果是,请打开它,看看是否可以使用 Python 的 lxml/ElementTree 或 BeautifulSoup HTML 解析器解析输出。以上是关于如何在python中读取sql查询输出的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - 无法读取 json 键值 - JSON 中位置 1 的意外令牌 i - sql 查询输出问题
如何在python中执行mysql查询并将输出作为数据框[重复]