connect.cursor (). fetchone () не получает результаты от SELECT - PullRequest
0 голосов
/ 04 августа 2020

Я сейчас пытаюсь получить строку из table после его обновления, но это не работает. Я использую SELECT, а затем psycopg2 connect.cursor().fetchone(), но вместо этого появляется ошибка. Я искал это в течение нескольких часов, но, похоже, у меня не было никаких проблем, но, конечно же, я где-то.

Мой код:


    connect.cursor().execute(f"UPDATE logChannel SET log_channel = {arg.id} WHERE guild_id = {ctx.guild.id};")
    connect.commit()
    connect.cursor().execute(f"SELECT log_channel FROM logChannel WHERE guild_id = {ctx.guild.id};")
    print(connect.cursor().fetchone())

Результат:

    print(connect.cursor().fetchone())
    psycopg2.ProgrammingError: no results to fetch

Кстати, arg.id и ctx.guild.id являются частью discord.py, но я почти уверен, что это не имеет к этому никакого отношения, но если вы подозреваете, что это может, я могу дать вам больше моего кода. Большое спасибо за то, что помогли мне.

1 Ответ

0 голосов
/ 04 августа 2020

Каждый раз, когда вы вызываете connect.cursor(), psycopg2 дает вам новый объект курсора.

Это означает, что ваши update и select должны работать нормально, но вы выбрасываете результаты обоих этих вызовов execute(), поскольку затем вы открываете новый курсор.

Ваш код должен сохранить и использовать один курсор:

cur = connect.cursor()
cur.execute(f"UPDATE logChannel SET log_channel = {arg.id} WHERE guild_id = {ctx.guild.id};")
connect.commit()
cur.execute(f"SELECT log_channel FROM logChannel WHERE guild_id = {ctx.guild.id};")
print(cur.fetchone())
...