- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 python 的 psycopg2 包查询 postgresql 数据库。
简而言之:问题是每次我运行 psydopg2.cursor.execute()
命令时,psycopg2.fetchmany()
都会生成不同的表。
import psycopg2 as ps
conn = ps.connect(database='database', user='user')
nlines = 1000
tab = "some_table"
statement= """ SELECT * FROM """ + tab + " LIMIT %d;" %(nlines)
crs.execute(statement)
然后我分段获取数据。运行以下命令执行得很好,每次当我滚动回开头时,我都会得到相同的结果。
rec=crs.fetchmany(10)
crs.scroll(0, mode='absolute')
print rec[-1][-2]
但是,如果我再次运行 crs.execute(statement)
然后获取数据,它会产生完全不同的输出。我尝试再次运行 ps.connect
,执行 conn.rollback()、conn.reset()、crs.close()
并且没有任何结果导致表的一致输出.我还尝试了启用可滚动的命名游标
crs= conn.cursor(name="cur1")
crs.scrollable=1
...
crs.scroll(0, mode= 'absolute')
仍然没有运气。
最佳答案
您的查询中没有任何 ORDER BY
子句,Postgres 不保证没有任何特定的顺序。它特别有可能更改具有大量变动(即大量插入/更新/删除)的表的顺序。
参见 Postgres SELECT
doc有关更多详细信息,但这里最突出的片段是:
If the ORDER BY clause is specified, the returned rows are sorted in the specified order. If ORDER BY is not given, the rows are returned in whatever order the system finds fastest to produce.
无论使用何种类型的游标,我都不希望任何查询在给定此类查询的情况下必然返回完全相同的结果集。
当您添加显式 ORDER BY
时会发生什么?
关于python - psycopg2 每次执行都会产生不同的表和游标不滚动到开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491308/
我是一名优秀的程序员,十分优秀!