drs*_*drs 6 django django-queryset python-3.x
我正在尝试使用 django 的 ORM 检索表的一些内容。
results = Table.objects.using('production').filter(foreign_id=76)
results.count() # 129807
Run Code Online (Sandbox Code Playgroud)
该id表的列是主键,因此具有唯一条目。但是,返回的 QuerySet 有重复的条目:
results[7999].id # 27177397
results[121679].id # 27177397
Run Code Online (Sandbox Code Playgroud)
这不仅仅是id重复的,而是整行。其实QuerySet的最后8000条结果都是重复的(我想到了前8000条但是我没有验证过)。
当然,我已经验证id了表中的列是唯一的,并且在27177397直接(或通过 django ORM)使用 sql查询时,我只得到一个结果。
results = Table.objects.using('production').filter(id=27177397, foreign_id=76)
results.count() # 1
Run Code Online (Sandbox Code Playgroud)
怎么会这样?
我使用 pyscopg2 2.5.3 使用 django 1.6.7。
按外键过滤强制连接(另外,默认 order by 可以引发连接)。使用distinct删除重复行:
results = ( Table
.objects
.using('production')
.filter(foreign_id=76)
.order_by()
.distinct()
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |