【问题标题】:Psycopg2 not fetching all data that exists in databasePsycopg2 未获取数据库中存在的所有数据
【发布时间】:2014-09-23 18:35:47
【问题描述】:

我正在使用 psycopg2 查询数据库,并在循环中执行我的查询。

for i in range(0,len(time)):
            cur2.execute("SELECT  * from obs where ujd=%s;",(time[i],))
            m=cur2.fetchall()
            print time[i], m

对于某些查询,数据按我的预期返回。但是,有时即使我可以从 psycopg2 外部成功查询并获取数据,也不会返回任何内容。

例如,当我的循环达到 time[i] of 2456146.72784 psycopg2 返回一个空数组:[]

如果我在循环之外执行此操作并手动输入 2456146.72784,那么我会得到我想要的所有数据。

如何在循环内成功查询?

【问题讨论】:

  • ujd和变量time[i]的数据类型是什么?
  • ... 特别是,要么是/要么都是浮点数?
  • 感谢您的提示,只需声明float(time[i])即可解决问题。
  • 代替cur2.fetchall(),您可以通过光标for i in cur2或将其转换为列表list(cur2)

标签: python database psycopg2 psql


【解决方案1】:

指定数据类型可以解决问题。在这种情况下,它们是浮点数。

换行:

cur2.execute("SELECT  * from obs where ujd=%s;",(time[i],))

到:

cur2.execute("SELECT  * from obs where ujd=%s;",(float(time[j]),))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2020-10-22
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多