Я сделал счетчик голосования и хочу теперь ограничить пользователей, что бы у каждого пользователя был только 1 голос, для этого я создал 3 поля: usr_id, post_id, last_vote. last_vote принимает -1 (против), 1 (за), None (пользователь голосует впервые). Но после голоса поле last_vote не переходит из состояния None в 1.
cursor.execute("SELECT last_vote FROM likes WHERE post_id = (?)",
(abs(data),)) # Tuple - force
last_vote = cursor.fetchone()
if data > 0:
if last_vote == None: # first vote
likes_count += 1
elif last_vote < 0:
likes_count += 1
dislikes_count -= 1 # remove previous vote
last_vote = 1
elif data < 0:
if last_vote == None: # first vote
dislikes_count += 1
elif last_vote > 0:
dislikes_count += 1
likes_count -= 1 # remove previous vote
last_vote = -1
cursor.execute("""UPDATE posts SET
likes_count = ?, dislikes_count = ? WHERE id = ?""",
(likes_count, dislikes_count, abs(data),)) # Tuple - force
cursor.execute("UPDATE likes SET last_vote = ? WHERE post_id = ?",
(last_vote, abs(data),)) # Tuple - force
connection.commit()
connection.close()
print(last_vote) # None
DDL
cursor.execute("""CREATE TABLE IF NOT EXISTS likes(
user_id INTEGER NOT NULL,
post_id INTEGER NOT NULL,
last_vote INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (user_id, post_id),
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE,
FOREIGN KEY (post_id) REFERENCES posts (id) ON DELETE CASCADE)""")
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости