点赞和踩的功能代码如何实现
- 编程技术
- 2025-02-23 17:03:13
- 1

点赞和踩的功能通常是在社交平台、论坛或评论系统中常见的互动功能。以下是一个简单的点赞和踩的功能实现,使用Python和SQLite数据库作为后端存储。我们需要创建一个S...
点赞和踩的功能通常是在社交平台、论坛或评论系统中常见的互动功能。以下是一个简单的点赞和踩的功能实现,使用Python和SQLite数据库作为后端存储。
我们需要创建一个SQLite数据库和表来存储用户、文章和点赞/踩记录。
```python
import sqlite3
创建或连接到数据库
conn = sqlite3.connect('likes.db')
c = conn.cursor()
创建表
c.execute('''
CREATE TABLE IF NOT EXISTS articles (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL
)
''')
c.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL
)
''')
c.execute('''
CREATE TABLE IF NOT EXISTS likes (
id INTEGER PRIMARY KEY,
article_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
is_like BOOLEAN NOT NULL,
FOREIGN KEY(article_id) REFERENCES articles(id),
FOREIGN KEY(user_id) REFERENCES users(id)
)
''')
提交事务
conn.commit()
关闭连接
conn.close()
```
接下来,实现点赞和踩的功能。
```python
def add_article(title, content):
conn = sqlite3.connect('likes.db')
c = conn.cursor()
c.execute('INSERT INTO articles (title, content) VALUES (?, ?)', (title, content))
article_id = c.lastrowid
conn.commit()
conn.close()
return article_id
def add_user(username):
conn = sqlite3.connect('likes.db')
c = conn.cursor()
c.execute('INSERT INTO users (username) VALUES (?)', (username,))
user_id = c.lastrowid
conn.commit()
conn.close()
return user_id
def like_article(article_id, user_id, is_like):
conn = sqlite3.connect('likes.db')
c = conn.cursor()
检查是否已经点赞或踩过
c.execute('SELECT is_like FROM likes WHERE article_id = ? AND user_id = ?', (article_id, user_id))
existing_like = c.fetchone()
if existing_like and existing_like[0] == is_like:
print("You have already liked or disliked this article.")
return
如果是点赞,则添加记录;如果是踩,则删除之前的记录
if is_like:
c.execute('INSERT INTO likes (article_id, user_id, is_like) VALUES (?, ?, ?)', (article_id, user_id, is_like))
else:
c.execute('DELETE FROM likes WHERE article_id = ? AND user_id = ?', (article_id, user_id))
conn.commit()
conn.close()
def get_likes_count(article_id):
conn = sqlite3.connect('likes.db')
c = conn.cursor()
c.execute('SELECT COUNT() FROM likes WHERE article_id = ? AND is_like = 1', (article_id,))
likes_count = c.fetchone()[0]
c.execute('SELECT COUNT() FROM likes WHERE article_id = ? AND is_like = 0', (article_id,))
dislikes_count = c.fetchone()[0]
conn.close()
return likes_count, dislikes_count
示例使用
article_id = add_article("Hello World", "This is a test article.")
user_id = add_user("Alice")
点赞
like_article(article_id, user_id, True)
踩
like_article(article_id, user_id, False)
获取点赞和踩的数量
likes_count, dislikes_count = get_likes_count(article_id)
print(f"Likes: {likes_count
本文链接:http://xinin56.com/bian/706510.html
上一篇:重庆第二师范学院怎么样
下一篇:ct 文件如何更新基址