Есть ли способ принять пользовательский ввод и сопоставить его со значением PYTHON SQL

#python #sql #python-3.x #database

#python #sql #python-3.x #База данных

Вопрос:

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

  • Eno (идентификатор сотрудника)
  • фрейм (имя)
  • зарплата
  • пол (мужской или женский)

Я пытаюсь обновить данные из ввода python в мою базу данных sql. Итак, в основном я прошу пользователя выбрать Eno из списка (показывая строку в базе данных), и если их ввод является допустимым Eno, тогда база данных получит информацию об этом сотруднике. Мой код пока выглядит следующим образом:

 change = input("Enter the Employee Number To Make Changes") 
mycursor.execute("SELECT Eno FROM Employees WHERE 10 <= 15")
record = mycursor.fetchall()'                                
for x in record:                                           
    print(x)
  

Мой вывод:

 Enter the Employee Number To Make Changes
(36,)
(37,)
(38,)
(39,)
(40,)
  

Ценю любую помощь!

Комментарии:

1. database это общая концепция, какова ваша СУБД, у каждого из них есть свои собственные диалекты ..?

2. Внешние Dmbs, использующие sql для хранения данных, интерпретируемых из пользовательского ввода в python3

Ответ №1:

Ваш вопрос требует дополнительной информации, предполагая, что все работает нормально. Вы можете обновить свои данные с помощью:

 cursor.execute('''
                UPDATE DatabaseName.TableName
                SET frame = 'DV', salary = 'DV', sex = 'DV'
                WHERE Eno = 'required employee id'
                ''')
conn.commit()
  

где DV ссылается на желаемое значение, надеюсь, это поможет.

Комментарии:

1. У меня это выполнение работало идеально, но я пришел к ситуации, когда, если бы было два пользователя по имени Райан, это изменило бы их обоих. мой подход заключался в том, чтобы выбрать дублирующегося пользователя и различать их идентификатор для изменения

2. Я думаю, что ваша проблема скорее связана с дизайном БД, убедитесь, что ваш первичный ключ — это идентификатор Eno пользователя, а не имя frame , поскольку повторяющиеся имена являются распространенными ситуациями в большинстве таблиц, и на них крайне не рекомендуется полагаться. ПОДСКАЗКА : вы можете получить повторяющиеся имена, используя SELECT * FROM.TableName WHERE Eno = 'required employee id' , а затем выполнить обновление на основе того, что возвращает этот запрос. @Ryano’Riordan

3. Рад, что это помогло, пожалуйста, нажмите на зеленую галочку, чтобы помочь сообществу найти ответ в ближайшее время.

4. Хорошо, я действительно не знаю, как выразить это словами, но вот я иду. Итак, поскольку все мои сотрудники находятся в таблице базы данных со своими атрибутами fname salary sex, например, если бы я хотел изменить пол Джона с мужского на женский, как бы я это сделал, потому что в настоящее время при выполнении кода каждый мужчина меняется на женщину

5. Если он меняет каждого мужчину на женщину, убедитесь, что: 1) ваш первичный ключ — это идентификатор 2) у вас есть уникальный идентификатор для каждого работодателя. Если это не поможет, пожалуйста, опубликуйте пример вашей БД в две строки. @Ryano’Riordan

Ответ №2:

Если я правильно понимаю, вы пытаетесь обновить свою базу данных SQL из своего скрипта python.

Чтобы получить список допустимых записей, вам нужно извлечь номера сотрудников из кортежей.

 change = input("Enter the Employee Number To Make Changes") 
mycursor.execute("SELECT Eno FROM Employees WHERE 10 <= 15")
record = mycursor.fetchall()'                                
records = [str(x[0]) for x in record]

# Check valid entry
if change in records:
   # Set up a dictionary
   changes = dict()
   fields = ["frame","salary","sex"]
   for f in fields:
      value = input("{}: ".format(f))
      changes[f] = value
   # Do the SQL stuff
   mycursor.execute("""
      UPDATE Employees
      SET {} = {}, {} = {}, {} = {}
      WHERE Eno = {}
      """.format(fields[0],changes[fields[0],fields[1],changes[fields[1],fields[2],changes[fields[2],change))

else:
   # insert some error handling...

  

… или что-то в этом роде.

Помогает ли это?

Комментарии:

1. omg это действительно хорошая концепция. единственная другая ошибка, которую я получаю в sql. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом ‘{} = {}, {} = {}, {} = {} ГДЕ Eno = {}’ в строке 1

2. Проверьте, что оператор SQL создает то, что он должен делать в виде строки, я не проверял этот бит, я должен признать