Как связать значения в MySQL - PullRequest
0 голосов
/ 29 апреля 2020

Извините, если название моего вопроса не имеет особого смысла. Я постараюсь объяснить, как могу.

MySQL таблица:

enter image description here

Контекст:

В моем коде python пользователь может ввести название компании. Название компании подтверждено в столбце Company. Если он находит его в столбце, он запускает следующий код, иначе он возвращает ошибку.

Что мне нужно:

Когда пользователь вводит название компании, я хочу присвоить соответствующее имя employe_1 переменной. Таким образом, если пользователь вводит Company "XYZ", он должен автоматически присвоить "Alex" переменной.

Существующий код

Это мой код:


 mydb = mysql.connector.connect(host="localhost", user="nn", passwd="passpass")

    mycursor = mydb.cursor()

    company_name = input()
    mycursor.execute("""SELECT employe_1 FROM listedatabase.entreprises_inspecteurs WHERE employe_1 = %s"""(company_name,))
    data = mycursor.fetchall()
    if data:
        code goes there
    else: 
        print('data not found in database')

Спасибо за любую помощь

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Просто включите имя столбца employee_1 в запрос и, если данные доступны, получите доступ к нему, как показано ниже.

company_name = input()
    mycursor.execute("""SELECT n_fabricant, employee_1 FROM listedatabase.entreprises_inspecteurs WHERE n_fabricant = %s"""(company_name,))
    data = mycursor.fetchall() # Instead of fetchall, use fetchone if the query is expected to return only one row
    if data:
        row = data[0]
        variable = row[1]
        # remaining code
0 голосов
/ 29 апреля 2020

Вы должны выбрать столбец сотрудников в вашем запросе SQL.

Просто для повторного использования кода, я бы всегда изолировал запрос от его выполнения. и поместил {} для форматирования вместо "% s" строкового формата

    query = """SELECT n_fabricant, {} FROM 
listedatabase.entreprises_inspecteurs WHERE n_fabricant = {} """

Я бы также сделал столбец сотрудников в качестве переменной, таким образом, завтра вы можете подумать, что вам нужен столбец employe_2 и было бы всегда проще изменить его при хранении в переменной, чем в самой строке запроса. это позволит избежать многих опечаток.

Так что вот код для меня:

company_name = input()

employe_column = "employe_1"

query = """SELECT n_fabricant, {} FROM 
listedatabase.entreprises_inspecteurs WHERE n_fabricant = {} """

mycursor.execute(query.format(employe_column, company_name))

data = mycursor.fetchall() 
if data:
    row = data[0] # this will select the first record of the query...if you hav many records of the same company name, you should consider a for loop here...
    selected_employe = row[1] #this will get the second column (in our case the emplye column) value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...