Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2022 16:38:15

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Пытаюсь запустить такой скрипт

 #!/usr/bin/env python3
import pyinputplus
import settings
import os
try:
    conn = pymysql.connect(
        user=str(settings.user),
        password=str(settings.password),
        host=str(settings.host),
        port=settings.port,
        database=str(settings.database)
    )
except Exception as e:  # print error message when Exception occurs
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)
cur = conn.cursor()
if os.path.exists('/home/uzer/PycharmProjects/pythonProject/data.txt'):
   print("File exists")
else:
   username = pyinputplus.inputEmail('Username (must be existing email): ', limit=3)
   cur.execute('SELECT * FROM database WHERE userID = "' + str(username) + '"')
   bas = cur.fetchone()
   print(str(bas[5]))

Но такая ошибка появляется.
 Traceback (most recent call last):
  File "./script.py", line , in <module>
    print(str(bas[5]))
TypeError: 'NoneType' object is not subscriptable

Офлайн

#2 Март 29, 2022 06:46:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8546
Репутация: +  762  -
Профиль   Отправить e-mail  

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

Добавь print'ов, чтобы видеть получаемые значения на разных этапах.

  
username = pyinputplus.inputEmail('Username (must be existing email): ', limit=3)
print('username', repr(username))
cur.execute('SELECT * FROM database WHERE userID = "' + str(username) + '"')
bas = cur.fetchone()
print('bas', repr(bas))
print(str(bas[5]))



Офлайн

#3 Март 29, 2022 11:19:59

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

py.user.next
Добавь print'ов, чтобы видеть получаемые значения на разных этапах.
Добавил print_ы. Выдало такое:
 Username (must be existing email): tezt@t.com
username 'tezt@t.com'
bas None
 Traceback (most recent call last):
  File "./script.py", line , in <module>
    print(str(bas[5]))
TypeError: 'NoneType' object is not subscriptable

непонятно почему bas None, ведь перед условием if стоит
 cur = conn.cursor()
И я пытался эту строку вставить и в условии else: перед cur.execute() - все равно та же ошибка с bas None и TypeError: ‘NoneType’ …

Отредактировано ffrr (Март 29, 2022 11:20:39)

Офлайн

#4 Март 29, 2022 12:34:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8546
Репутация: +  762  -
Профиль   Отправить e-mail  

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

Выполни такой код

  
cur.execute('SELECT * FROM database')
res = cur.fetchone()
print('res', repr(res))

Если будет выводить первую запись, так попробуй
  
cur.execute('SELECT userID FROM database')
res = cur.fetchone()
print('res', repr(res))



Офлайн

#5 Март 29, 2022 12:39:38

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

py.user.next
cur.execute('SELECT * FROM database')
res = cur.fetchone()
print('res', repr(res))
выдало первую строку из database:
 Username (must be existing email): dsd@w.de
res (1, 'uzer1@domain.com', '54f914d30e9197941df33a3d822ae8464461b6e1', 950, 14, '90:0e:b3:32:64:74', '', '')

Офлайн

#6 Март 29, 2022 14:31:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8546
Репутация: +  762  -
Профиль   Отправить e-mail  

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

ffrr
выдало первую строку из database:
Второй код что выводит?



Офлайн

#7 Март 29, 2022 14:48:12

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

 res ('uzer1@domain.com',)

Офлайн

#8 Март 29, 2022 17:13:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8546
Репутация: +  762  -
Профиль   Отправить e-mail  

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

ffrr
  
cur.execute('SELECT * FROM database WHERE userID = "' + str(username) + '"')
Попробуй так в своём первом коде
  
cur.execute('SELECT * FROM database WHERE userID = %s', (username,))
Вводи пользователя, который есть в базе.
Например,
uzer1@domain.com



Отредактировано py.user.next (Март 29, 2022 17:13:50)

Офлайн

#9 Март 29, 2022 17:27:37

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

выводит полную строку из БД для этого userID:

 res (1, 'uzer1@domain.com', '54f914d30e9197941df33a3d822ae8464461b6e1', 950, 14, '90:0e:b3:32:64:74', '', '')

Офлайн

#10 Март 29, 2022 17:54:20

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Если я ввожу несуществующий userID, то у меня

 res None
иначе выводит полную строку из БД для этого userID. Может в моем коду нужен еще 1 блок try: except?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version