2017-05-07 76 views
0

我想追加JSON到JSON的结构,但我面临一个非常奇怪的情况。 我使用不同的数据库程序代码测试了这个代码,它工作。但是,当我使用我的代码时,它不起作用,尽管所有其余的东西都是相同的,我也从数据库中得到结果。瓶JSON追加不起作用

为了简单起见,我删除了不必要的部分。

为两者Script代码是

<script> 
$(function(){ 
      $.ajax({ 
       url: '/getAllWishes' or '/getAllMovies', 
     type: 'GET', 
       success:function(response) { 
       console.log(response); 
       }, 
       error:function(error){ 
       console.log(error); 
       } 
      }); 
    }) 
</script> 

工作码是

@app.route('/getAllWishes') 
def getAllWishes(): 
    try: 
      print('test') 
      conn = mysql.connect() 
      cursor = conn.cursor() 
      cursor.callproc('sp_GetAllWishes',(3,)) 
      result = cursor.fetchall() 
      print('result') 
      print(result) 

      wishes_dict = [] 
      for wish in result: 
       wish_dict = { 
         'Id': wish[0], 
         'Title': wish[1], 
         'Description': wish[2], 
         'FilePath': wish[3], 
         'Like':wish[4], 
         'HasLiked':wish[5] 
         # 'Id': '1', 
         # 'Title': '1', 
         # 'Description': '1', 
         # 'FilePath': '1', 
         # 'Like':'1', 
         # 'HasLiked':'1' 
         } 
       wishes_dict.append(wish_dict) 
       # print(wishes_dict) 
      return json.dumps(wishes_dict) 
      #return json.dumps('[]') 

    except Exception as e: 
     return render_template('error.html',error = str(e)) 

及其打印结果是

((4, u'Test', u'test', u'static/Uploads/667ca948-7ab0-4045-9b53-9646ece56336.jpg 
', 1, 1), (5, u'wow', u'wow', u'static/Uploads/ddcf2c6a-7c03-4a97-850f-5f60fe246 
f90.jpg', 0, 0), (6, u'ww', u'ww', u'static/Uploads/15b361bd-2d4d-4bb9-84d2-5ca9 
1b15a0e6.jpg', 0, 0), (7, u'aa', u'aa', u'static/Uploads/36e2b946-5969-4587-84ed 
-d8c1aab6dd6a.jpg', 0, 0), (8, u'ss', u'ss', u'static/Uploads/a35114be-8143-4113 
-aff3-5de1fd89a464.jpg', 0, 0), (9, u'dd', u'dd', u'static/Uploads/a675a843-c158 
-4cde-bb0e-86b44665dd4f.jpg', 0, 0), (10, u'ff', u'ff', u'static/Uploads/111cb65 
0-0469-45cf-98d4-b0d035ad616c.jpg', 0, 0), (11, u'aaa', u'aaa', None, None, 0)) 

并从浏览器控制台将其结果

[{"Description": "test", "FilePath": "static/Uploads/667ca948-7ab0-4045-9b53-9646ece56336.jpg", "HasLiked": 1, "Id": 4, "Like": 1, "Title": "Test"}, {"Description": "wow", "FilePath": "static/Uploads/ddcf2c6a-7c03-4a97-850f-5f60fe246f90.jpg", "HasLiked": 0, "Id": 5, "Like": 0, "Title": "wow"}, {"Description": "ww", "FilePath": "static/Uploads/15b361bd-2d4d-4bb9-84d2-5ca91b15a0e6.jpg", "HasLiked": 0, "Id": 6, "Like": 0, "Title": "ww"}, {"Description": "aa", "FilePath": "static/Uploads/36e2b946-5969-4587-84ed-d8c1aab6dd6a.jpg", "HasLiked": 0, "Id": 7, "Like": 0, "Title": "aa"}, {"Description": "ss", "FilePath": "static/Uploads/a35114be-8143-4113-aff3-5de1fd89a464.jpg", "HasLiked": 0, "Id": 8, "Like": 0, "Title": "ss"}, {"Description": "dd", "FilePath": "static/Uploads/a675a843-c158-4cde-bb0e-86b44665dd4f.jpg", "HasLiked": 0, "Id": 9, "Like": 0, "Title": "dd"}, {"Description": "ff", "FilePath": "static/Uploads/111cb650-0469-45cf-98d4-b0d035ad616c.jpg", "HasLiked": 0, "Id": 10, "Like": 0, "Title": "ff"}, {"Description": "aaa", "FilePath": null, "HasLiked": 0, "Id": 11, "Like": null, "Title": "aaa"}] 

和不工作的代码是

@app.route('/getAllMovies') 
def getAllMovies(): 
    print('getAllMovies-------------------------') 
    try: 
    conn = mysql.connect() 
    cursor = conn.cursor() 
    cursor.callproc('sp_GetAllMovies') 
    result = cursor.fetchall() 
    print('result') 
    print(result) 

    movies_dict = [] 
    print(movies_dict) 

    for movie in result: 
    movies_dict = { 
     # 'title': movie[0], 
     # 'mtype': movie[1], 
     # 'rating': movie[2], 
     # 'myear': movie[3], 
     # 'imagepath': movie[4] 
     'title': '1', 
     'mtype': '1', 
     'rating': '1', 
     'myear': '1', 
     'imagepath': '1' 
    } 
    print('movies_dict') 
    print(movies_dict) 
    movies_dict.append(movies_dict) 
    print('movies_dict after append') 
    print(movies_dict) 
    return json.dumps(movies_dict) 
    #return json.dumps('[]') 
    except Exception as e: 
    return render_template('error.html',error = str(e)) 

及其打印结果是

((4, u'Test', u'test', u'static/Uploads/667ca948-7ab0-4045-9b53-9646ece56336.jpg 
', 1, 1), (5, u'wow', u'wow', u'static/Uploads/ddcf2c6a-7c03-4a97-850f-5f60fe246 
f90.jpg', 0, 0), (6, u'ww', u'ww', u'static/Uploads/15b361bd-2d4d-4bb9-84d2-5ca9 
1b15a0e6.jpg', 0, 0), (7, u'aa', u'aa', u'static/Uploads/36e2b946-5969-4587-84ed 
-d8c1aab6dd6a.jpg', 0, 0), (8, u'ss', u'ss', u'static/Uploads/a35114be-8143-4113 
-aff3-5de1fd89a464.jpg', 0, 0), (9, u'dd', u'dd', u'static/Uploads/a675a843-c158 
-4cde-bb0e-86b44665dd4f.jpg', 0, 0), (10, u'ff', u'ff', u'static/Uploads/111cb65 
0-0469-45cf-98d4-b0d035ad616c.jpg', 0, 0), (11, u'aaa', u'aaa', None, None, 0)) 

和提交 “movies_dict.append(movies_dict)” 线时,它得到的误差。

我不明白为什么它不起作用。我已经测试了这部分已经超过一天了。请帮助..谢谢。

+1

@Momin嗨。我认为我的代码是最小的。我试图从MySQL读取数据,将数据输入到字典中,并使用ajax从JavaScript获取结果。尽管如此,我非常感谢您的评论。 –

回答

0

首先你要用它自己附加movies_dict,我想你想追加电影,因为电影是你的循环变种。

,你可以使用类似

movies_dict.update(movie) 

OR

import itertools 
movie_dict = dict(itertools.chain(movies_dict, result)) 
+0

感谢您的评论,但不幸的是,它不起作用..在应用你的答案之一后,它什么都不更新..你有什么想法? –

+0

你能在这里写更新的代码吗? – MehulJoshi

+0

我认为这似乎与数据库相关的问题有关。在执行json相关函数时,它不起作用。我可以为您提供任何相关信息。我真的很感谢你的帮助.. @ app.route( '/ getAllMovies') 高清getAllMovies(): 尝试: 康恩= mysql.connect() 光标= conn.cursor() cursor.callproc(” sp_GetAllMovies ') 结果= cursor.fetchall() movies_dict = [] movie_dict =字典(itertools.chain(movies_dict,结果)) 返回json.dumps(movies_dict) 除例外为e: 返回render_template(' 错误.html',error = str(e)) –