Voici un code qui ne fonctionne pas correctement. Chaque fois que la base de données est interrogée, j'obtiens une valeur 0 ou 1 pour les options, et les valeurs dans la base de données n'augmentent pas, même si comme vous pouvez le voir, aux lignes 86 et 89, les valeurs sont incrémentées. Une idée de ce qui ne va pas ici? J'utilise Django sur le moteur Google App.Les valeurs de la base de données du moteur de l'application Google ne s'incrémentent pas
user_result = request.POST['json']
65 user_result = json.loads(user_result)
66 user_country = get_user_country(user_result)
67 question_number = get_question_number(user_result)
68 answered_option = get_answered_option(user_result)
69
70 country_option_1 = 0
71 country_option_2 = 0
72 world_option_1 = 0
73 world_option_2 = 0
74
75 """
76 Get already existing record for the question for the contry, or create
77 new one and put/update in db
78 """
79
80 country_wide_data = db.GqlQuery("SELECT * FROM CountryWideData WHERE country = :1 AND questionNo = :2", user_country, question_number)
81 flag = False
82 for i in country_wide_data:
83 flag = True
84 if flag:
85 if answered_option==1:
86 country_wide_data[0].optionOne = country_wide_data[0].optionOne + 1
87
88 elif answered_option==2:
89 country_wide_data[0].optionTwo = country_wide_data[0].optionTwo + 1
90 country_option_1 = country_wide_data[0].optionOne
91 country_option_2 = country_wide_data[0].optionTwo
92 country_wide_data[0].put()
93 else:
94 country_wide_data = CountryWideData(country=user_country, questionNo=question_number)
95
96 if answered_option==1:
97 country_wide_data.optionOne = 1
98 country_wide_data.optionTwo = 0
99 elif answered_option==2:
100 country_wide_data.optionOne = 0
101 country_wide_data.optionTwo = 1
102 country_option_1 = country_wide_data.optionOne
103 country_option_2 = country_wide_data.optionTwo
104 country_wide_data.put()
Merci Adam! Bien que fetch ait besoin d'un argument. fetch (1) a fonctionné pour moi. – msk
Adams, un code d'exemple de la façon dont vous allez mettre à jour les valeurs en utilisant une transaction? On dirait que GQL n'autorise pas les instructions de mise à jour. :/ – msk
Shuaib: Pour exécuter une transaction, supprimez toutes vos instructions put et, immédiatement après votre boucle, ajoutez: dp.put (country_wide_data). – dannyroa