0
目前,我正在學習Python的背後基礎。我的任務是創建一些簡單的與數據庫相關的Python腳本。我在使用JSON在我的SELECT
腳本工作的問題。json.loads格式問題
我所需要的數據格式如下所示;
{
"Data": {
"name1": "val1",
"name2": "val2",
"name3": "val3",
"name4": "val4"
},
"IMPORTANT_NOTE": "This data is from the test database - used for demonstration only!"
}
數據本身在DB中存儲爲JSON,所以它是1字段。數據檢索如下;
try:
db = MySQLdb.connect(dbhost, dbuser, dbpass, sqldb)
except:
msg = "Connect error"
else:
cursor = db.cursor()
sql = "SELECT JSON_DATA FROM TEST_DB_TABLE WHERE DATA_GUID= %s"
args = "TestData"
cursor.execute(sql,args)
for row in curosr.fetchall() : jsondata = row[0]
finally:
db.close()
這將返回以下,如果我print(jsondata)
;
{
"name1": "val1",
"name2": "val2",
"name3": "val3",
"name4": "val4"
}
我已經習慣了這樣的PHP我希望使用一個數組來形成數據的休息和json_encode
定稿。我明白Python的數組是字典,所以我覺得這就是我應該在這裏使用的。我在最後嘗試了這個;
data = json.loads(jsondata)
FinOut = {"Data": data, "IMPORTANT_NOTE": "This data is from the test database - used for demonstration only!"
print(FinOut)
...這裏的問題是,它返回無效的JSON;
{'Data': {u'name1': u'val1', u'name2': u'val2', u'name3': u'val3', u'name4': u'val4'}, 'IMPORTANT_NOTE': 'This data is from the test database - used for demonstration only!'}
我也嘗試json.load(jsondata)
,而不是後來cgitb
報告錯誤(我假設,因爲.load
是基於文件的同等學歷;
<type 'exceptions.AttributeError'>: 'str' object has no attribute 'read'
args = ("'str' object has no attribute 'read'",)
message = "'str' object has no attribute 'read'"
任何想法我如何糾正這種輸出的數據類似於一個在頂部的格式?