KeyError: 'data' in python3
KeyError: 'data' in python3
我正在使用 graphql 来显示用户发出的拉取请求数。当我通过 GitHub 在 graphql 资源管理器上 运行 查询时,查询工作正常。但是,当我 运行 脚本时,它显示 KeyError 并且预期值为字符串。即使输入的用户名被转换为字符串。
代码如下:
accessToken = "###################################"
headers = {"Authorization": "bearer "+ accessToken }
def getpullRequests(username):
topic_query = """
query {
repositoryOwner(login:""" + str(username) + """) {
login
... on User {
name
avatarUrl
pullRequests(last: 100){
nodes{
id
createdAt
additions
deletions
}
}
}
}
}
"""
request = requests.post('https://api.github.com/graphql', json={'query': topic_query}, headers=headers)
if request.status_code == 200:
result = request.json()
prsdata = {}
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
prdata = {}
if re.match(r'^2019-10', pr['createdAt']):
prdata['createdAt'] = pr['createdAt']
prdata['additions'] = pr['additions']
prdata['deletions'] = pr['deletions']
prsdata[pr['id']] = prdata
if prsdata:
print(prsdata)
else:
print("No PRs made in Hacktoberfest")
if __name__ == "__main__":
username = input("Enter the GitHub username: ")
getpullRequests(username)
然而在调试之后我发现问题出在这一行:
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
关于 运行 代码,我遇到的错误是:
Enter the GitHub username: adiaux
Traceback (most recent call last):
File "script.py", line 47, in <module>
getpullRequests(username)
File "script.py", line 33, in getpullRequests
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
KeyError: 'data'
有人请帮忙:)
我找到了解决办法。
基本上我使用了 graphQL 变量并将变量变成了字典,如下所示:
variables=dict({
"name":str(username)
})
但是相应地我修改了查询,包括:
query ($name:String!){
repositoryOwner(login:$name){
login
... on User {
name
avatarUrl
pullRequests(last: 100){
nodes{
id
createdAt
additions
deletions
}
}
}
}
}
感谢尝试解决此问题的人:)
我正在使用 graphql 来显示用户发出的拉取请求数。当我通过 GitHub 在 graphql 资源管理器上 运行 查询时,查询工作正常。但是,当我 运行 脚本时,它显示 KeyError 并且预期值为字符串。即使输入的用户名被转换为字符串。
代码如下:
accessToken = "###################################"
headers = {"Authorization": "bearer "+ accessToken }
def getpullRequests(username):
topic_query = """
query {
repositoryOwner(login:""" + str(username) + """) {
login
... on User {
name
avatarUrl
pullRequests(last: 100){
nodes{
id
createdAt
additions
deletions
}
}
}
}
}
"""
request = requests.post('https://api.github.com/graphql', json={'query': topic_query}, headers=headers)
if request.status_code == 200:
result = request.json()
prsdata = {}
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
prdata = {}
if re.match(r'^2019-10', pr['createdAt']):
prdata['createdAt'] = pr['createdAt']
prdata['additions'] = pr['additions']
prdata['deletions'] = pr['deletions']
prsdata[pr['id']] = prdata
if prsdata:
print(prsdata)
else:
print("No PRs made in Hacktoberfest")
if __name__ == "__main__":
username = input("Enter the GitHub username: ")
getpullRequests(username)
然而在调试之后我发现问题出在这一行:
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
关于 运行 代码,我遇到的错误是:
Enter the GitHub username: adiaux
Traceback (most recent call last):
File "script.py", line 47, in <module>
getpullRequests(username)
File "script.py", line 33, in getpullRequests
for pr in result['data']['repositoryOwner']['pullRequests']['nodes']:
KeyError: 'data'
有人请帮忙:)
我找到了解决办法。 基本上我使用了 graphQL 变量并将变量变成了字典,如下所示:
variables=dict({
"name":str(username)
})
但是相应地我修改了查询,包括:
query ($name:String!){
repositoryOwner(login:$name){
login
... on User {
name
avatarUrl
pullRequests(last: 100){
nodes{
id
createdAt
additions
deletions
}
}
}
}
}
感谢尝试解决此问题的人:)