Я сделал счетчик голосования и хочу теперь ограничить пользователей, что бы у каждого пользователя был только 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)""")
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
есть проблема с некорректным отображением емоджи в телеграмме при выводе с бдЕмоджи записаны в виде \U0001f6ab (Python source code)
Нужно вывести строку "0_10_1_9_2_8_3_7_4_6_5_5_6_4_7_3_8_2_9_1_10_0_"Внешний цикл выводит числа на четных позициях (от 0 до 10) внутренний цикл - числа на нечетных...
Сделал дома локальный сервер, привязал домен, закинул файлы сайта, переделал БД под новый домен, теперь сайт выводит непонятный кодСайт на домене...