2017-10-15 102 views
-2

コードを実行するたびに、同じエラーが発生し、修正方法がわかりません。Python3 Sha256:TypeError:バッファAPIをサポートするオブジェクトが必要です

スクリプト1:

from firebase import firebase 
import hashlib as hash 

#define database to use as a link 
fb = firebase.FirebaseApplication('https://proxima-database.firebaseio.com') 

def append_data(directory, key, value): 
    #add data to database, specifying directory, and key:value 
    append = fb.post(directory, {key : value}) 
    print(append) 

def fetch_data(directory): 
    #grab data from specific directory 
    fetch = fb.get(directory, None).encode("utf-8") 
    print(fetch) 

スクリプト2:

import hashlib as hash 
import DataFetch as df 

directory = '/prox' 
dataToHash = df.fetch_data(directory) 

hashedData = hash.sha256(dataToHash) 

append = df.append_data(directory, 'John', hashedData) 
print(append) 

出力:私は何を変更するために理解しない

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 "/Users/User/Desktop/Programming Folder/Data Hashing Function.py" 
b'123' 
Traceback (most recent call last): 
    File "/Users/User/Desktop/Programming Folder/Data Hashing Function.py", line 7, in <module> 
    hashedData = hash.sha256(dataToHash) 
TypeError: object supporting the buffer API required 

?私は多くの同様の問題を見てきましたが、私がどのように関連しているのか把握できません。ありがとうございました!

+0

を私はまさにそれをシリアライズでしょうどのように? – Oinkers

+3

'print()'は 'return'ではありません。関数から値を取得するには 'return'を使う必要があります。 –

+0

はい私は理解していますが、ここでは問題はありません – Oinkers

答えて

2

fetch_data関数は値を返しません。 Python関数が明示的に値を返さない場合、Noneが返されます。

>>> import hashlib 
>>> hashlib.sha256(None) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: object supporting the buffer API required 

問題は、それがフェッチデータを返すfetch_data持つことによって固定することができます。

def fetch_data(directory): 
    #grab data from specific directory 
    fetch = fb.get(directory, None).encode("utf-8") 
    return fetch 
関連する問題