当前位置:首页 > 编程技术 > 正文

点赞和踩的功能代码如何实现

点赞和踩的功能代码如何实现

点赞和踩的功能通常是在社交平台、论坛或评论系统中常见的互动功能。以下是一个简单的点赞和踩的功能实现,使用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

最新文章