2016-08-18 42 views
0

我發送一個字符串通過http獲取請求到我的views.py,然後發回到我的JavaScript,但我沒有得到我想要的數據,而是我得到一個空字典。我也在Django 1.8上。JSON轉儲的原始SQL查詢返回空的字典

views.py:

def getData(request): 
    some_data = request.GET.get('selectionvalue') 
    cursor = connection.cursor() 
    cursor.execute("SELECT SW_ID FROM sw WHERE SWName = %s ", [some_data]) 
    row = cursor.fetchall() 
    return JsonResponse({"Item" : list(row)}) 
    #return JsonResponse({"Hello" : "world"}) works. 

我一直停留在這個問題在過去的幾個小時,他會喜歡任何幫助。謝謝。

我試過,但仍然沒有運氣:

def getData(request): 
    some_data = request.GET.get('selectionvalue') 
    cursor = connection.cursor() 
    cursor.execute("SELECT SW_ID FROM sw WHERE SWName = %s ", [some_data]) 
    row = cursor.fetchall() 
    data = {"Item" : row} 
    return JsonResponse(data) 

UPDATE:

我現在已經轉換的查詢字典,我原本有一個字符串。我現在試圖在我的查詢中使用該字符串變量,但它不起作用。如果一個不包含變量的不同查詢可以完美地工作。我似乎無法弄清楚這一點。

回答

0

好好玩了一下後,我終於修好了。我的問題是,我需要在我的數據庫中的一個表和列中搜索確切的字符串名稱,但是我正在以views.py作爲查詢字典檢索我發送的數據。問題是這個查詢字典有我通過我的請求作爲字典的關鍵字傳入的單個字符串,而不是值。所以我需要將其轉換爲單個字符串變量,然後使用我的查詢。我還需要在查詢內部沒有「%s」。

Views.py:

def getData(request): 
    some_data = request.GET 
    for key in some_data: 
     SWVALUE = key 
    cursor = connection.cursor() 
    cursor.execute("SELECT SW_ID FROM sw WHERE SWName = %s ", (SWVALUE)) 
    = %s ", %ItemfromSW) 
    row = cursor.fetchall() 
    json_data = json.dumps(list(row)) 
    return HttpResponse(json_data, content_type = "application/json") 
1

你試圖打印 「行」 的變量?有沒有結果? 因爲這可能不是查詢中的問題,但問題是行數據不是json可序列化的,所以JsonResponse無法呈現它。

i。也就是說,我相信cursor.fetchall()會按照以下格式傳遞你的數據:[(1,),(5,),(7,)],因爲它返回一個元組列表。當你調用list(row)時,響應是相同的(因爲元組列表已經是一個列表)。

只是可以肯定,試試這個:

def getData(request): 
    some_data = request.GET.get('selectionvalue') 
    cursor = connection.cursor() 
    cursor.execute("SELECT SW_ID FROM sw WHERE SWName = %s ", [some_data]) 
    row = cursor.fetchall() 

    items = [] 
    for r in row: 
     items.append(r[0]) 

    return JsonResponse({"Item" : items})