@motya88

Как обработать результат из mysql в python?

Добрый вечер!
подскажите, как работать с полученными данными из базы?
У меня в базе храняться id пользователя и параметр является ли он админом или нет.
Я хочу при входе проверять по id и если параметр 'Y' то выполнять определенное действие ....
Вот так проверяю в базе:
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

def query_with_fetchone():
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute("SELECT id, Admin FROM users_settings where id = '157249651'")

        row = cursor.fetchone()

        while row is not None:
            print(row)
            row = cursor.fetchone()


    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()

if __name__ == '__main__':
    query_with_fetchone()


в ответе получаю (157249651, 'Y')

Как теперь можно написать условие и обработать полученный результат из базы?
и почему print(type(row)) возвращает ?

Пытаюсь добавить условие, но не выходит
while row is not None:
            print(row)
            row = cursor.fetchone()
print(row[1])
            row = cursor.fetchone()
            if (row[1]) == 'Y':
                print("ok")
            else:
                print('no')
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
skipirich
@skipirich
проходил мимо
while row is not None: - никогда не будет None. Попробуй вот так
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config

def query_with_fetchone():
    try:
        dbconfig = read_db_config()
        conn = MySQLConnection(**dbconfig)
        cursor = conn.cursor()
        cursor.execute("SELECT id, Admin FROM users_settings where id = '157249651'")

        for row in cursor.fetchall():
            if row[0] == "Y":
                print("ok")
            else:
                print("no")

    except Error as e:
        print(e)

    finally:
        cursor.close()
        conn.close()

if __name__ == '__main__':
    query_with_fetchone()


Если все таки хочешь только одну запись т.е fetchone() то выкинь цикл
for row in cursor.fetchall():
    if row[0] == "Y":
        print("ok")
    else:
        print("no")

и замени на
row = cursor.fetchone()
if row[0] == 1:
    print("ok")
else:
    print("no")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы