Этот вопрос закрыт для ответов, так как повторяет вопрос Ошибка в пересылке фото?
whycutes
@whycutes
Yep , Belarus ????????.py

Ошибка: 'NoneType' object is not subscriptable?

Ошибка:
TypeError: 'NoneType' object is not subscriptable

Описание:
Данные которые я добавляю в бд через машину состояний (код МС в ссылке ниже, вдруг поможет), не возвращаются мне через функцию sql_read , таблица создалась , данные вроде как туда приходят , но отправить их пользователю не могу



Лог ошибки:
2022-07-30T10:02:59.659235+00:00 app[web.1]:     response = await handler_obj.handler(*args, **partial_data)
2022-07-30T10:02:59.659236+00:00 app[web.1]:   File "/app/handlers/users.py", line 52, in command_memories
2022-07-30T10:02:59.659236+00:00 app[web.1]:     await sqlite_db.sql_read(message)
2022-07-30T10:02:59.659236+00:00 app[web.1]:   File "/app/data_base/sqlite_db.py", line 35, in sql_read
2022-07-30T10:02:59.659242+00:00 app[web.1]:     await bot.send_photo(message.from_user.id , ret[0], f'{ret[1]}\nОписание:\n{ret[2]}\nНадеюсь вам понравилось воспоминание!')
2022-07-30T10:02:59.659242+00:00 app[web.1]: TypeError: 'NoneType' object is not subscriptable


Сам код бд:
from create_bot import bot
import psycopg2
from data_base.config import host , user , password , database
 
#try:
base= psycopg2.connect (
        host=host ,
        user=user ,
        password=password ,
        database=database
    )
base.autocommit=True
cur = base.cursor()
 
async def sql_start():
    if base:
        print ('Я подключился!')
        cur.execute (
        """CREATE TABLE IF NOT EXISTS memoriess(
        img varchar (50) NOT NULL,
        name varchar (100) PRIMARY KEY,
        discruption varchar (200) NOT NULL);"""
        )
    base.cursor()
 
async def add_sql_command(state):
    async with state.proxy() as data:
            cur.execute(
            """INSERT INTO memoriess (img , name , discruption) VALUES
            (' ? ',' ? ',' ? ' ); """ , tuple(data.values()))
 
async def sql_read(message):
    for ret in cur.execute('SELECT * FROM memoriess') , cur.fetchall():
        await bot.send_photo(message.from_user.id , ret[0], f'{ret[1]}\nОписание:\n{ret[2]}\nНадеюсь вам понравилось воспоминание!')
 
async def sql_read2():
    return cur.execute ('SELECT * FROM memoriess') , cur.fetchall()
 
 
async def sql_delete_command(data):
    cur.execute ('DELETE FROM memoriess WHEN name == ?', (data,))
 
#except Exception as _ex:
 #   print ('INFO', _ex)
#finally:
 #   if base:
   #     print('Включаюсь!')
  • Вопрос задан
  • 2625 просмотров
Ответы на вопрос 1
@PavelMos
На предыдущей операции по каким-то причинам объекту ничего не присваивается, у него получается тип None, а на следующей операции с ним пытаются что-то сделать.
Надо смотреть, что возвращает предыдущая операция, то есть чтение из базы.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы