Форум сайта python.su
Пытаюсь запустить такой скрипт
#!/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
Офлайн
Добавь 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]))
Офлайн
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
cur = conn.cursor()
Отредактировано ffrr (Март 29, 2022 11:20:39)
Офлайн
Выполни такой код
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))
Офлайн
py.user.nextвыдало первую строку из database:
cur.execute('SELECT * FROM database')
res = cur.fetchone()
print('res', repr(res))
Username (must be existing email): dsd@w.de res (1, 'uzer1@domain.com', '54f914d30e9197941df33a3d822ae8464461b6e1', 950, 14, '90:0e:b3:32:64:74', '', '')
Офлайн
ffrrВторой код что выводит?
выдало первую строку из database:
Офлайн
res ('uzer1@domain.com',)
Офлайн
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)
Офлайн
выводит полную строку из БД для этого userID:
res (1, 'uzer1@domain.com', '54f914d30e9197941df33a3d822ae8464461b6e1', 950, 14, '90:0e:b3:32:64:74', '', '')
Офлайн
Если я ввожу несуществующий userID, то у меня
res None
Офлайн