【问题标题】:AttributeError: 'tuple' object has no attribute 'strftime' issue on postgresAttributeError:'tuple' 对象在 postgres 上没有属性 'strftime' 问题
【发布时间】:2021-01-18 20:34:44
【问题描述】:

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

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

我们将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    stamp = cursor.fetchall()[0]
    

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

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

    【讨论】:

    • 这给了我stamp = cursor.fetchall()[0] IndexError: list index out of range 这是否意味着它告诉我它正在返回一个无?这很奇怪,因为时间列确实存在。
    • @Jasme 这意味着stamp 是一个空元组,这意味着where 子句不返回任何内容。试试print(stamp)
    • 我的一些时间列条目为 NULL,这可能是它没有返回戳记的原因。我编辑了我的问题并添加了一个屏幕截图,显示了我的表格列是如何设置的。
    • 在您之前的@​​987654321@ 中对此进行了解释。您必须考虑值是 None 的可能性。
    猜你喜欢
    • 2013-11-22
    • 2021-03-18
    • 1970-01-01
    • 2023-01-26
    • 2015-06-22
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多