【问题标题】:TypeError: initial_value must be str or None, not bytes (bigquery)TypeError:initial_value 必须是 str 或 None,而不是字节(bigquery)
【发布时间】:2017-08-15 21:02:46
【问题描述】:

我正在使用 python3.5,我使用 python 通过 bigquery 创建 bigquery client (https://github.com/tylertreat/BigQuery-Python)

代码如下:

from bigquery import get_client

PROJECT_ID = 'api-project-xxxxxx'
SERVICE_ACCOUNT = 'xxxx@api-project-xxxx.iam.gserviceaccount.com'
PRIVATE_KEY_PATH = 'xxxx.p12'

with open(PRIVATE_KEY_PATH, 'rb') as f:
     private_key = f.read()

client = get_client(PROJECT_ID,private_key=private_key,service_account=SERVICE_ACCOUNT,readonly=True)

我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-181-858afcfa416a> in <module>()
----> 1 client = get_client(PROJECT_ID,private_key=private_key,service_account=SERVICE_ACCOUNT,readonly=True)
/Users/XXXXXX/.pyenv/versions/anaconda3-2.4.0/lib/python3.5/site-packages/bigquery/client.py in get_client(project_id, credentials, service_url, service_account, private_key, private_key_file, json_key, json_key_file, readonly, swallow_results)
    131         credentials = _credentials().from_p12_keyfile_buffer(
    132             service_account,
--> 133             StringIO(private_key),
    134             scopes=scope)
    135 
TypeError: initial_value must be str or None, not bytes

【问题讨论】:

    标签: python google-bigquery


    【解决方案1】:

    StringIOstr 对象转换为流。您需要传递一个str,但private_key 是一个字节对象,因为您正在以二进制模式读取文件。试试这个:

    with open(PRIVATE_KEY_PATH, 'r') as f:
         private_key = f.read()
    

    其余代码保持不变。

    【讨论】:

    • 感谢您的回复。但出现另一个错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 1: ordinal not in range(128)
    • @TsuyoshiEndo 这与此无关。你能再开一个问题吗?
    • 好的。多谢!我确认不正确的 p12 文件。所以,我使用了正确的文件,没有错误。
    • @TsuyoshiEndo 啊,很高兴听到。如果您觉得有帮助,请考虑标记接受。谢谢。
    猜你喜欢
    • 2018-11-25
    • 2023-03-09
    • 2015-04-19
    • 1970-01-01
    • 2018-09-13
    • 2021-09-09
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多