【问题标题】:python 2.7 sqlite3 cursor returns only one resultpython 2.7 sqlite3 游标只返回一个结果
【发布时间】:2013-12-08 00:24:44
【问题描述】:

我在摆弄 Python 和 SQLite。我有一个结构如下的表:

PID | CID | a | b
=================
1   | 1   | ...
1   | 2   | ...
2   | 1   | ...
2   | 2   | ...

其中 PID 是一个对象的 ID,CID 是另一个对象的 ID。基本上,一个表可以跟踪这两个对象之间的关系,其属性(a、b 等...)可能会覆盖对象的属性。

当我在python中执行以下语句时(c是sqlite3游标):

results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchmany()

我在列表中只得到一个结果,但是,当我在 sqlite 浏览器中运行相同的 (?) 查询时,我得到了许多预期的结果: SELECT cid FROM test WHERE pid=1

怎么了?

【问题讨论】:

  • fetchmany 一次返回 n 行,并且可以多次调用。请改用fetchall
  • @JonClements 请回答。

标签: python sql python-2.7 sqlite


【解决方案1】:

每次调用获取的行数由 size 参数指定。如果没有给出,游标的数组大小决定了要获取的行数。

    results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchmany(N)

将返回 N 行。 如果要检索所有行,请改用 fetchall() 函数:

    results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchall()

【讨论】:

  • 做到了。谢谢!我完全忘记了fetchall()
猜你喜欢
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多