处理Python脚本读取和写入数据使用泊坞窗

处理Python脚本读取和写入数据使用泊坞窗

问题描述:

我最近开发了我的本地机器一个Python代码从mysql数据库中读取数据,并在谷歌大query.I使用服务帐户插入进行身份验证,以谷歌大查询的自动认证目的和我的代码可以成功执行没有错误。现在我正试图在docker python容器中运行我的脚本。一旦我运行我的代码,收到一个认证消息,我不知道如何自动处理它,而无需用户和系统之间的交互。处理Python脚本读取和写入数据使用泊坞窗

消息是:

“请访问这个URL授权此应用程序: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=4xxxxxxxk0tmvj2m941jhre2nbqka17vqxxfxxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%xxxxxxxb&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&state=kszePnO3tOxxxxxx&prompt=consent&access_type=offline 输入授权码:回溯(最近通话最后一个):... .........

的EOFError:EOF读线的时候 “

我的Python代码:

import mysql.connector 
import pandas as pd 
from oauth2client.client import GoogleCredentials 
from bigquery import get_client 
import os 
import urllib.request 

service_account = '[email protected]' 
key = 'xxxxxxxxx.p12' 
project_id = 'xxxxxxxxx' 
db = mysql.connector.connect(user=$user, 
password=$password,host=$host,database=$database) 
df= pd.read_sql(sql_query,db) 
.... 
client = get_client(project_id, service_account=service_account, 
private_key_file=key, readonly=False) 

#Push dataframe to google bigquery 
df.to_gbq('GoogleBQDatbaseName.TableName',projectid,verbose=True,if_exists='append') 

任何建议如何我可以自动处理我的脚本中的身份验证问题。 谢谢

我做同样的工作,因此与谷歌AUTH dockerfile的部分看起来像这样:

RUN apt-get install -y software-properties-common curl 

RUN export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"; echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list 

RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 

RUN apt-get update && apt-get -y install google-cloud-sdk 

COPY YOUR_JSON_KEY_HERE.json /keys/ANY_NAME.json 

ENV GOOGLE_APPLICATION_CREDENTIALS ANY_NAME.json 

RUN gcloud auth activate-service-account --key-file=/keys/ANY_NAME.json 

所以,你必须创建谷歌服务帐户昂得到谷歌云端控制台JSON关键。另外我使用

FROM ubuntu:16.04 

而且在这种情况下,你的Python脚本你没有谷歌AUTH。我的意思是你不需要这部分代码:

client = get_client(project_id, service_account=service_account, private_key_file=key, readonly=False) 
+0

感谢您的详细的答案瓦西里......我会尝试你的解决方案。不幸的是,在现阶段,我无法为服务帐户创建JSON文件,因为我没有足够的权限。我只有P12文件,项目ID和服务帐户的电子邮件文件在我hand.Since它的工作好了我的本地系统上,我认为有可能是搬运工来处理这种不创建JSON文件就像我在做同样的事情的解决方案我本地Mac机器。 –

+0

您可以尝试P12密钥文件,而不是JSON,但我不知道将它的工作与否 –