@ArtemZA
Студент

Что надо сделать что бы Sqlite UPDATE заработал?

Здравствуйте.
Решил написать маленькое приложение для того что бы получать информацию о персонажах с сервера игры.
Для хранения данных решил использовать SQLite.
Мне удалось сделать что бы:
Программа получила данные -> поместила в базу -> Показала
Но:
Когда приходит время обновить информацию,код не работает,хотя ошибки не выскакивают
Подскажите что я делаю не так?
Функция поиска информации об игроке в БД
def search_nicknames(name):
    cursor = conn.cursor()
    sql = "SELECT * FROM user_info WHERE Nickname ==? "
    search_data_update = []
    print("search_nicknames ",name)
    
    
    
    cursor.execute(sql, (name,))  
    #print(name[i])
    
    result =   cursor.fetchall()
    cursor.close()
    #print("Fetachall: ", result)
    if result  == []:
        print("ISNERT")
        return insert_data(name)
         


    if result != []:

        print("Есть в БД", name,result[0][9])
       
        if (time.time() - result[0][9]) > 1800 or result[0][1] == "ERROR":

            print("Последний раз обновлялся ",time.ctime(result[0][9]) ," ", result[0][1],result[0][2])
            print(time.ctime(time.time()))
       
            return update_data(name)

        else:
            print("рановато " , name)
            
            return result[0]

Функция обновления данных
def update_data(name):
    cursor = conn.cursor()
    

    
    print("update_data " , name)
    req_data_user = user_req(name)
   

    print("UPDATE DATA",req_data_user[1],req_data_user[2],req_data_user[3],req_data_user[4],req_data_user[5],req_data_user[6],req_data_user[7],req_data_user[8],time.time(),name[0])
   
  
    cursor.execute("""UPDATE user_info set Corporation = ? ,Alliance = ?,Sec_status = ? ,Ship_Kill = ? ,Solo_Kill = ?,Ship_Lost = ?,Gang_Ratio = ? ,ZKillboard_inf = ?, time_update = ?  WHERE Nickname == ?""",(req_data_user[1],req_data_user[2],req_data_user[3],req_data_user[4],req_data_user[5],req_data_user[6],req_data_user[7],req_data_user[8],time.time(),name[0]))


    conn.commit()
    cursor.close()

    return req_data_user
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@o5a
В исполнении UPDATE user_info в параметрах используется name[0], а должно быть просто name.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@xDimus
В запросе WHERE Nickname == ? исправьте на WHERE Nickname = ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы