AttributeError:“ tuple”对象在postgres上没有属性“ strftime”问题

时间:2020-10-03 11:44:40

标签: python postgresql discord.py discord.py-rewrite

嗨,我正在尝试获取一个时间戳,该字符串存储在我的postgres数据库表的time列中。但是,当尝试在我的代码中获取它时,它会返回错误

dateonlystring = stamp.strftime("%Y-%m-%w-%W %H:%M:%S") AttributeError: 'tuple' object has no attribute 'strftime'

我不确定为什么或如何将元组转换为字符串。

我的代码:

async def check_mute(self):
    guild = self.bot.get_guild(750744359650109661)
    for member in list(guild.members):
        member_role = discord.utils.get(member.guild.roles, name="Members")
        restricted_role = get(guild.roles, name="Restrict")
        conn = psycopg2.connect(DATABASE_URL, sslmode='require')
        cursor = conn.cursor()
        cursor.execute("SELECT time FROM blacklist WHERE username=%s", (member.id, ))
        stamp = cursor.fetchall()[0]
        if restricted_role in member.roles:
            if stamp:
                datestamp = datetime.now()
                datetimestring = str(datestamp.now().strftime("%Y-%m-%w-%W %H:%M:%S"))
                dateonlystring = stamp.strftime("%Y-%m-%w-%W %H:%M:%S")
                if (datetimestring > dateonlystring):
                    await member.add_roles(member_role)
                    await member.remove_roles(restricted_role)
                    print("Done.")

我的表格设置:

table

我们将帮助您或帮助您确定从此处出发的方向。

1 个答案:

答案 0 :(得分:1)

fetchall()返回一个可迭代的元组,即一个元组的列表/元组。每个外部可迭代对象是数据库中的一行,内部元组中的每个元素都是列的值。

stamp = cursor.fetchall()[0]

stamp是一个元组(错误提示)。要获取time列的值,您需要访问stamp[0],因此

stamp[0].strftime("%Y-%m-%w-%W %H:%M:%S")