Python, если строка mysql не равна imput

#python #python-2.7 #mysql-python #python-3.8

#python #python-2.7 #mysql-python #python-3.8

Вопрос:

я использую модуль mysql.connector для своего скрипта.

вот мой скрипт с моей попыткой проверить: моя структура базы данных: имя, тип, прем, блок

 class database():
    def __init__(self):
        self.Database = mysql.connect(
            host='localhost',
            user='root',
            password='',
            auth_plugin='mysql_native_password'
        )
        self.cursor = self.Database.cursor()

    def GetProfileInformations(self, name):
        args = name.split(' ')
        found =  self.cursor.execute('SELECT * FROM list.raids WHERE name='   args[0])
        sql =  self.cursor.execute('SELECT * FROM list.raids')
        rc = self.cursor.fetchall(sql)
        f = self.cursor.fetchall(found)
        # Check is imput equal to name 
        for _ in f:
            if not found:
                return
        for row in rc:
            try:
                if row[0] == args[0]:
                    if row[3] == 1:
                        if row[2] == 1:
                            print(f"Name {row[0]} found with 1")
                        else:
                            print(f"Name: {row[0]} found with 0")
                    else:
                        print(f"Name: {row[0]} found but is blocked")
            except:
                print("any error")
        self.cursor.close()
 

Теперь мой вопрос, почему функция if exist не работает?

             if not found:
                return
 

хорошего дня и спасибо за помощь

Ответ №1:

Вы можете использовать эти атрибуты курсора, чтобы проверить, есть ли у вашего запроса результаты или нет:

 if not found.with_rows:
   print("No records found")
 

Вы также можете использовать:

 if found.rowcount <= 0:
    print("No records found")
 

Ответ №2:

Я решил для себя:

 import mysql.connector as mysql

class database():
    def __init__(self):
        self.Database = mysql.connect(
            host='localhost',
            user='root',
            password='',
            auth_plugin='mysql_native_password'
        )
        self.cursor = self.Database.cursor(buffered=True)

    def IsInSQL(self, name):
        self.cursor.execute(f'SELECT EXISTS(SELECT name AS name FROM list.raids WHERE name = "{name}")')
        f = self.cursor.fetchall()
        if not f:
            return True
        else:
            return False

    def GetProfileInformations(self, name):
        args = name.split(' ')
        self.cursor.execute('SELECT * FROM list.raids')
        rc = self.cursor.fetchall()
        if not self.IsInSQL(args[0]):
            print("nicht gefunden")
        for row in rc:
            try:
                if row[0] == args[0]:
                    if row[3] == 1:
                        if row[2] == 1:
                            print("")
                        else:
                            print("")
                    else:
                        print("not found")

            except:
                print("lel")
        self.cursor.close()