python - 使用 SELECT 语句执行值
问题描述
我正在使用表合并来根据参数元组列表从我的数据库中选择项目。查询工作正常,但cur.fetchall()
没有返回我想要的整个表。
例如:
data = (
(1, '2020-11-19'),
(1, '2020-11-20'),
(1, '2020-11-21'),
(2, '2020-11-19'),
(2, '2020-11-20'),
(2, '2020-11-21')
)
query = """
with data(song_id, date) as (
values %s
)
select t.*
from my_table t
join data d
on t.song_id = d.song_id and t.date = d.date::date
"""
execute_values(cursor, query, data)
results = cursor.fetchall()
在实践中,我要检查的元组列表有数千行长,我希望响应也有数千行长。
但是如果我cur.fetchall()
在这个请求结束时打电话,我只会得到 5 行。
我知道这是因为execute_values
批处理请求,但有一些奇怪的行为。
如果我通过page_size=10
了,那么我会拿回 2 件物品。如果我设置fetch=True
了,那么我根本不会得到任何结果(即使rowcount
不匹配)。
我的想法是批量处理这些请求,但page_size
批次的数量与我期望每批的项目数量不匹配。
我应该如何更改此请求,以便获得我期望的所有结果?
解决方案
推荐阅读
- tensorflow - 带有错误`ValueError:形状(None,5)和(None,500)不兼容`的Tensorflow模型
- mule - 如何每天只使用 mulesoft 发送一次电子邮件?
- python - 在python中将JSON信息存储到字典中的问题
- typescript - 将 Typescript 泛型与 any 相结合而不会丢失类型
- android - 在一个recyclerViews中实现多个视图
- python - 根据 levenshtein 距离将数据框列中的字符串与列表中的单词进行比较
- python - 函数中索引的参数
- typescript - How to mock a deeply nested function with TypeScript and Jest
- asp.net - 允许用户仅查看他们上传的数据 (Asp.NET MVC5)
- android - 如何在手机中删除sqlite数据库