如何在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 查询输出问题

如何在查询中向 SQL 结果添加字符串 [关闭]

如何在python中执行mysql查询并将输出作为数据框[重复]

如何从属性文件中读取 SQL 查询

DART SQL 如何从 Dart 中的 SQL 查询结果中读取多行值(多列)?

如何从常规 SQL 查询中输出 XML?