【问题标题】:how to read sql query output in python如何在python中读取sql查询输出
【发布时间】: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 行吗?

标签: python sqlplus


【解决方案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 解析器解析输出。
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多