Возвращенные строки изменены в последовательности ОБНОВЛЕНИЕ - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь вернуть, какие строки используются в моей последовательности ОБНОВЛЕНИЯ, чтобы проверить, обновило ли оно что-нибудь на самом деле или оно пыталось обновить несуществующую строку, но у меня возникают проблемы с возвращением фактических строк

После запросаДрузья и просматривая другие статьи, я попытался использовать методы, которые они представили, например, метод rowcount sqlite3, а также оператор RETURNING в функции execute, но оба выдают AttributeError и SQLError, соответственно.

def set_reason(guild: str, warn_id: int, reason):
    warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild", {'reason': reason, 'id': warn_id, 'guild': guild})
    return warns.fetchone()

Попытка использовать оператор RETURNING:

warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild RETURNING warns.*", {'reason': reason, 'id': warn_id, 'guild': guild})

Я получаю apsw.SQLError: SQLError: near "RETURNING": syntax error.

И попытка использовать метод rowcount:

warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild", {'reason': reason, 'id': warn_id, 'guild': guild}).rowcount()

Я получаю 'AttributeError:' apsw.Cursor 'не имеет атрибута' rowcount'`

1 Ответ

0 голосов
/ 07 октября 2019

Согласно этой странице документации APSW , метод changes() находится на объекте соединения, а не на объекте курсора.

См. этот ответ для прямогоSQL-запрос, чтобы получить ту же информацию. Перейдите по ссылке для более подробной информации о функции. В случае, если неясно, вы просто выполняете SELECT changes() и извлекаете результат, как и любой другой запрос с одним результатом.

...