如何从Airflow连接中另存为字符串的字节中获取字节值?

时间:2019-06-10 18:00:36

标签: python python-3.x byte airflow

我通过以下方式在Airflow连接中保存Google云端硬盘令牌:

b'\x80\x03cgoogle.oauth2 ...

我有以下代码从连接中恢复令牌:

drive_conn = BaseHook.get_connection("drive_api")
token = drive_conn.password

我想以bytes格式恢复此令牌,这是我的以下代码正常工作所必需的:

token = pickle.loads(token)

但是它存储为str

我可以将其恢复为bytes吗?或如何转换为字节?还是有其他方法可以存储此令牌?也许之前转换为str

我尝试过:

token.decode()

但是我遇到以下错误:

  

UnicodeDecodeError:'utf-8'编解码器无法解码位置0:起始字节无效的字节0x80

1 个答案:

答案 0 :(得分:1)

我本人立即对此进行了研究,对于AirFlow以二进制形式存储的令牌,您需要运行ast.literal_eval首先将它们转换回本机类型。这应该为您工作:

drive_conn = BaseHook.get_connection("drive_api")
token = ast.literal_eval(drive_conn.password)

请记住,如果无法解析输入数据,这将引发异常。