python - 如何从 GraphQL 获得超过 100 个结果
问题描述
我正在尝试使用 GraphQL 为 Uniswap 2.0 上的每个令牌对接收令牌对数据。当我运行我的代码时,我只得到 100 个结果,但我需要检索 1800+ 个结果。我已经更改了几次查询,但无论我如何更改它,100 对的数据似乎总是有上限。如何获取所有对的数据?
import requests
query = """{
pairs(orderBy: reserveUSD, orderDirection: asc) {
id
token0 {
id
symbol
totalLiquidity
totalSupply
}
token1 {
id
symbol
totalLiquidity
totalSupply
}
reserveUSD
reserve0
reserve1
totalSupply
volumeUSD
}
}"""
url = 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2'
r = requests.post(url, json = {"query": query})#"{\n pairs(first: 10, where: {reserveUSD_gt: \"1000000\", volumeUSD_gt: \"50000\"}, orderBy: reserveUSD, orderDirection: desc) {\n id\n token0 {\n id\n symbol\n }\n token1 {\n id\n symbol\n }\n reserveUSD\n volumeUSD\n }\n}\n","variables":None})
#print(r.text)
json_data = json.loads(r.text)
print(len(json_data['data']['pairs']))
解决方案
我认为您最多可以查询 1000 个结果。只需要添加"first"
到查询中。如果有超过 1000 个结果,则首先进行查询#1
,然后运行第二个结果,您可以在其中使用跳过功能跳过您已经获得的 1000 个。
{
pairs(first: 1000, orderBy: reserveUSD, orderDirection: asc) {
id
token0 {
id
symbol
totalLiquidity
totalSupply
}
token1 {
id
symbol
totalLiquidity
totalSupply
}
reserveUSD
reserve0
reserve1
totalSupply
volumeUSD
}
}
推荐阅读
- android-management-api - API_LEVEL 不合规细节……有什么要担心的吗?
- javascript - 获取完整的 url 表单服务器
- python - 根据熊猫中的条件返回列名列表作为新列
- pandas - 如何选择熊猫数据框中特定列中一系列值之间的所有行
- sql - 如何排除oracle sql组中的小时,分钟,秒
- sql - 获取具有性别男性和女性的姓名
- c# - 如何添加自定义声明类型
- z3 - z3中实际值计算的问题
- database - Jmeter脚本开发:IBM cloudant性能测试,最大请求/秒
- flask - flask_mail 似乎是在 pythonanywhere 中导入的,但是运行时 get error code: no module named