2017-02-01 3 views
1

Я делаю программу python, которая выполняет вычисления Elo для базы данных Azure SQL. Проблема заключается в последних двух командах cursor.execute (UPDATE).pyodbc UPDATE выдает исключение

Я извлек часть кода перед публикацией здесь, чтобы сделать его меньше, но все переменные правильно передаются из методов find_winner и find_loser - команды печати показывают правильное значение.

Когда я запускаю программу как есть, она печатает изменения в рейтингах и сообщение из блока except. Когда я комментирую методы UPDATE, он не печатает сообщение except. Единственная причина, по которой я могу придумать, состоит в том, что переменные из кортежа из find_winner и find_loser не вводятся в SQL-инструкцию должным образом.

Я попытался запустить его с помощью? и «% s» вместо победителя_new_rating и winner_id, но ни одна из трех версий не работала.

Есть ли что-то очевидное, что мне не хватает? Каков правильный способ ввода параметров, хранящихся в переменных?

def rate(): 
    try: 
     (winner_rating,winner_name,winner_id) = find_winner() 
     (loser_rating,loser_name,loser_id) = find_loser() 

     cursor = conn.cursor() 

     print(winner_name, "wins", winner_rating, "-->", winner_new_rating) 
     print(loser_name, "loses:", loser_rating, "-->", loser_new_rating) 

     cursor.execute("UPDATE KIDS SET Rating = winner_new_rating WHERE LocalID = winner_id") 
     cursor.execute("UPDATE KIDS SET Rating = loser_new_rating WHERE LocalID = loser_id") 

     conn.commit() 

    except: 
     print("Rate method error") 
+0

Что такое сообщение исключение? –

+0

К сожалению, это сообщение об исключении. Он просто печатает сообщение из блока except. – user3364161

+0

Итак, поймайте исключение и распечатайте сообщение. –

ответ

3

Это правильный синтаксис:

try: 
    cursor.execute("UPDATE KIDS SET Rating = ? WHERE LocalID = ?", 
     str(winner_new_rating), winner_id) 
    cursor.execute("UPDATE KIDS SET Rating = ? WHERE LocalID = ?", 
     str(loser_new_rating), loser_id) 
except DatabaseError as e: 
    print(str(e)) 
+0

Это одна из итераций, которые я пробовал. https://gyazo.com/5314456156ede0b019f48bb6f831a166 Вот скриншот, что происходит, когда я запускаю этот код. – user3364161

+0

ОК, а что такое сообщение об ошибке исключения? –

+0

Нет сообщения об ошибке. Я действительно не знаю, как изменить блок except, чтобы отобразить тип ошибки. – user3364161

Смежные вопросы