这是我需要的程序的最后一部分,删除函数。直到这一部分,机器人才能完美地工作。我正在尝试添加一个删除函数,该函数可以同时删除Discord Embed和相应的数据库行。
所以这个程序通过用户的提示来工作,然后他们的输入被存储在我的SQLite3数据库中,然后它被显示在一个嵌入式中。然后我有了另一个命令
它为数据库中的每一行显示一个嵌入信息。它还在每个嵌入的末尾添加了一个垃圾桶表情符号。我想要这个删除功能,当反应被按下删除嵌入,以及它在数据库中相关的行。我似乎两个都做不好。
下面是
命令:
if message.content.startswith('!view'):
rows = cursor.execute("SELECT name, renter, duration, price, start, end FROM rental").fetchall()
for row in rows:
embed = discord.Embed(title='Rental', color=0x0000FF)
embed.set_thumbnail(url='https://www.pngkit.com/png/detail/231-2316751_database-database-icon-png.png')
embed.add_field(name='Bot Name:', value=row[0], inline=False)
embed.add_field(name='Renter Name:', value=row[1], inline=False)
embed.add_field(name='Rental Duration:', value=row[2], inline=False)
embed.add_field(name='Rental Price:', value=row[3], inline=False)
embed.add_field(name='Start Date:', value=row[4], inline=False)
embed.add_field(name='End Date:', value=row[5], inline=False)
embed.set_footer(icon_url='https://pbs.twimg.com/profile_images/1325672283881484289/oaGtVIOD_400x400.png', text='Created by @Expected')
msg = await message.channel.send(embed=embed)
await msg.add_reaction('\U0001F5D1')
我有一个删除不一致消息的想法,但数据库条目是它让我绊倒的地方。是否需要像ROWID那样按唯一标识符删除?我真的不确定该把这部分放在哪里。
发布于 2021-03-01 02:25:58
通常是这样的,如果您想要单独删除每个db条目,则需要为每个db条目提供唯一的id。ROWID实际上是可以更改的,因此您应该创建自己的惟一标识符,并将其作为主键存储在数据库中
查询将简单地为:
CREATE TABLE IF NOT EXISTS rental(id INTEGER PRIMARY KEY, name...);
SELECT id, name, renter, duration, price, start, end FROM rental
DELETE from rental WHERE id = ?
https://stackoverflow.com/questions/66406439
复制相似问题