Python HttpError:<;请求时出现HttpError 400https://www.googleapis.com/bigquery/v2/projects/

Python HttpError:<;请求时出现HttpError 400https://www.googleapis.com/bigquery/v2/projects/,python,google-app-engine,google-bigquery,google-api-python-client,Python,Google App Engine,Google Bigquery,Google Api Python Client,这是我在尝试对bigquery进行身份验证调用时遇到的错误数据 HttpError: <HttpError 400 when requesting https://www.googleapis.com/bigquery/v2/projects/ClientId/datasets/samples/tables/natality?alt=json returned "Invalid project ID 'ClientId'. Project IDs must contain 6-63 low

这是我在尝试对bigquery进行身份验证调用时遇到的错误数据

HttpError: <HttpError 400 when requesting https://www.googleapis.com/bigquery/v2/projects/ClientId/datasets/samples/tables/natality?alt=json returned "Invalid project ID 'ClientId'. Project IDs must contain 6-63 lowercase letters, digits, or dashes. IDs must start with a letter and may not end with a dash.">
这里是app.yaml

application: hellomydashboard
version: 1
runtime: python
api_version: 1

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.py
这是bqclient.py

import httplib2
from apiclient.discovery import build
from oauth2client.appengine import oauth2decorator_from_clientsecrets

class BigQueryClient(object):
    def __init__(self, http, decorator):
        """Creates the BigQuery client connection"""
        self.service = build('bigquery', 'v2', http=http)
        self.decorator = decorator

    def getTableData(self, project, dataset, table):
        decorated = self.decorator.http()
        return self.service.tables().get(projectId=project, datasetId=dataset,
            tableId=table).execute(decorated)

    def getLastModTime(self, project, dataset, table):
        data = self.getTableData(project, dataset, table)
        if data is not None and 'lastModifiedTime' in data:
            return data['lastModifiedTime']
        else:
            return None

    def Query(self, query, project, timeout_ms=10000):
        query_config = {
            'query': query,
            'timeoutMs': timeout_ms
        }
        decorated = self.decorator.http()
        result_json = (self.service.jobs()
                       .query(projectId=project, body=query_config)
                       .execute(decorated))

        return result_json
我还尝试用项目Id替换ClientId,如错误中所述,但它给出了另一个错误

HttpError: <HttpError 404 when requesting https://www.googleapis.com/bigquery/v2/projects/hellodashboard87/datasets/samples/tables/natality?alt=json returned "Not Found: Dataset hellodashboard87:samples">
HttpError:
我将按照本页上的教程进行操作

为了使用BigQuery,您必须在中创建一个启用了BigQuery的项目(我假设您已经这样做了)。创建项目后,您将能够从URL获取项目编号,例如

https://code.google.com/apis/console/#project:12345XXXXXXX

在本例中,项目编号为
12345XXXXXXX
,这是您将用于
project\u ID

的值。为了使用BigQuery,您必须在中创建一个启用了BigQuery的项目(我假设您已经这样做了)。创建项目后,您将能够从URL获取项目编号,例如

https://code.google.com/apis/console/#project:12345XXXXXXX

在本例中,项目编号为
12345XXXXXXX
,这是您将用于
project\u ID

的值。为了使用Google的BigQuery提供的公共数据集,请使用以下参数:

项目ID
publicdata

数据集ID
样本

表ID
natality
(或任何您想要使用的)


要使用您拥有的任何数据集,请将项目ID切换到API控制台仪表板中的ID。

要使用Google的BigQuery提供的公共数据集,请使用以下参数:

项目ID
publicdata

数据集ID
样本

表ID
natality
(或任何您想要使用的)



要使用您拥有的任何数据集,请将您的项目ID切换到API控制台仪表板中的数据集。

您发布的错误消息说明了一切:“无效的项目ID‘ClientId’。项目ID必须包含6-63个小写字母、数字或破折号。”。为什么不尝试将
PROJECT\u ID
更改为类似于
PROJECT ID
的内容,即仅使用小写字母、数字或破折号。是的,我也尝试了使用PROJECT ID,但它给出了另一个错误HttpError:您可以尝试并使用它来测试输入是否准确。通过这个方法,你可以更容易地使用API来快速测试你的输入值。正如你所说的,我试过了,但是它显示----error 404 Not Found-Show headers-{“error”:{“errors”:[{“domain”:“global”,“reason”:“notFound”,“message”:“notFound:Dataset 440265227336:samples”}],“code”:404,“消息”:“未找到:数据集440265227336:samples”}@someone1它还显示请求GET{YOUR_API_KEY}授权:ya29.ahes6zqddqsqbwjpn3ngtaayf33ouscsw2vwtcyr4z9sgerxxx-JavaScript-User-Agent:Google API Explorer我需要API密钥吗?如果需要,怎么做?没有输入API密钥的字段您发布的错误消息说明了一切:“无效的项目ID‘ClientId’”。项目ID必须包含6-63个小写字母、数字或破折号。“。为什么不尝试将
PROJECT_ID
更改为类似
PROJECT ID
的内容,即仅使用小写字母、数字或破折号。是的,我也尝试了使用项目ID,但它给出了另一个错误HttpError:您可以尝试并使用它来测试输入是否准确。通过这个方法,你可以更容易地使用API来快速测试你的输入值。正如你所说的,我试过了,但是它显示----error 404 Not Found-Show headers-{“error”:{“errors”:[{“domain”:“global”,“reason”:“notFound”,“message”:“notFound:Dataset 440265227336:samples”}],“code”:404,“消息”:“未找到:数据集440265227336:samples”}@someone1它还显示请求GET{YOUR_API_KEY}授权:Bearer ya29.ahes6zqddqsqbwjpn3ngtaayf33ouscsw2vwtcyr4z9sgerxxx-JavaScript-User-Agent:Google API Explorer我需要API密钥吗?如果需要,怎么做?没有输入API密钥的字段。我做了完全相同的事情,但仍然得到这个错误,说项目ID无效,您创建了项目在API控制台中是否正确?您使用的项目ID值是多少?我错了,请查看我编辑的答案。您需要的是项目编号,而不是客户ID(尽管项目编号经常出现在客户ID中)。仍然收到另一个错误HttpError:您现在遇到了另一类问题,它肯定是正确的身份验证。您需要调整
数据集
表格
,以匹配项目中的这些问题。我做了完全相同的事情,但仍然收到此错误,称项目ID无效,并且您创建了proAPI控制台中的项目是否正确?项目ID使用的值是多少?我错了,请查看我编辑的答案。您需要的是项目编号,而不是客户ID(尽管项目编号经常出现在客户ID中)。仍然会遇到另一个错误HttpError:您现在遇到了另一类问题,它肯定是正确的身份验证。您需要调整
数据集
,以匹配项目中的数据。因此,为了使用公共数据,我不需要在google api控制台上创建我自己的项目或任何东西。但是在dat c中ase我将如何验证您当前的身份验证方法应如何工作,您是否收到任何错误?因此,为了使用公共数据,我不需要在google api控制台上创建我自己的项目或任何内容。但在这种情况下,我将如何验证您当前的身份验证方法应如何工作,您是否收到任何错误?