Как увеличить значение в postgres с помощью запроса на обновление (python) - PullRequest
0 голосов
/ 05 декабря 2018

Я хотел бы выполнить однострочный запрос на обновление (с использованием Python и Postgres), который увеличивает значение на 1. Какой самый эффективный способ сделать это? Я думал, что в идеале это будет выглядетьвот так (в моем файле Django Views.py):

def login_user(request):
    UserProfile.objects.filter(username=username).update(logins += 1)

НО из-за '+ =', этот код дает мне SyntaxError: invalid syntax - что странно, потому что я думал, что + = был законным питоном( см. Здесь ).Конечно, есть более эффективный способ увеличить значение в postgres, чем этот (который работает):

def login_user(request):
    thing = UserProfile.objects.filter(username=username).values("logins")   # gets the initial value
    total_logins = int(thing[0]['logins'])+1   # adds 1 to that value
    UserProfile.objects.filter(username=username).update(logins = total_logins)   # Updates the value in the database

Я нашел аналогичные решения для StackOverflow, но их ответы дали SQL-запросы вместо запросов Python. - Заранее спасибо!

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете использовать функцию F .

def login_user(request):
    thing = UserProfile.objects.get(username=username)  # gets the initial value
    thing.login = F('login') + 1   # adds 1 to that value
    thing.save()

или

UserProfile.objects.filter(username=username).update(logins=F('login')+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...