2016-12-29 6 views
0

Ich versuche, eine SQL-Abfrage für einige BigQuery-Tabelle auszuführen. Ich bekomme immer eine DefaultCredentialsError, wenn Sie versuchen, ein bigquery-Client-Objekt zu instanziieren. Zum Beispiel, indem Sie diese:Vermeidung von DefaultCredentialsError bei Verwendung von Google Bigquery API

from google.cloud import bigquery 
client = bigquery.Client.from_service_account_json('service_account_key.json') 

Oder durch dies zu tun:

from oauth2client.service_account import ServiceAccountCredentials 
key = open('service_account_key.json', 'rb').read() 

credentials = ServiceAccountCredentials(
    'my_email', 
    key, 
    scope='https://www.googleapis.com/auth/bigquery') 

client = bigquery.Client(credentials=credentials) 

Könnte es ein Problem mit meinem .json credentals-Datei? Ich habe ein Dienstkonto Schlüssel:

google api

Alle anderen Vorschläge?

+1

Haben Sie versucht, die (empfohlene) "GOOGLE_APPLICATION_CREDENTIALS" Art der Authentifizierung zu verwenden? Siehe hier: https://googlecloudplatform.github.io/google-cloud-python/stable/google-cloud-auth.html#overview. Können Sie testen, ob das funktioniert? –

+0

Sie treffen möglicherweise diesen Fehler - https://github.com/GoogleCloudPlatform/google-cloud-python/issues/1883 –

+0

Dank @GrahamPolley. Durch den Export des GOOGLE_APPLICATION_CREDENTIALS-Standorts konnte ich den Client mit 'from_service_account_json' instanziieren. Es ist ungewöhnlich, dass ich dies tun müsste, wenn ich bedenke, dass ich den Ort direkt an die 'from_service_account_json'-Funktion übergebe. – AlexG

Antwort

1

Sie treffen höchstwahrscheinlich einen bug mit der from_service_account_json Methode.

Verwenden Sie stattdessen die empfohlene Authentifizierungsmethode, indem Sie die GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable wie beschrieben here exportieren.

Verwandte Themen