извлечение одного значения из таблицы sql

#python #sql #sqlite

#python #sql #sqlite

Вопрос:

Я хочу получить одно значение из этой базы данных, которую я создал. Например, пользователь выберет имя из выпадающего списка (эти имена соответствуют столбцу name в базе данных). Выбранное имя будет сохранено в переменной с именем name_value . Я хотел бы знать, как выполнить поиск в базе данных имени в name_value И вернуть ТОЛЬКО другой текст в следующем столбце с именем Scientific в другую переменную с именем new_name . Надеюсь, я хорошо это объяснил?

   connection = sqlite3.connect("Cw.db")
  crsr = connection.cursor()
  crsr.execute("""CREATE TABLE Names(
               Name text,
               Scientific text)""")
 

Вставка этих значений: (Есть еще, но добавлять их все не нужно)

   connection = sqlite3.connect("Cw.db")
  crsr = connection.cursor()
  crsr.execute("""INSERT INTO Names (Name, Scientific)
                  VALUES
                  ('Human', 'Homo Sapien');""")
 

Ответ №1:

SELECT Оператор в SQL можно использовать для запроса строк с определенными значениями и для указания возвращаемых столбцов.

В вашем случае код будет выглядеть примерно так

 
stmt = """
SELECT Scientific 
  FROM Names
  WHERE Name = ?
  LIMIT 1
"""
name = 'Human'
crsr.execute(stmt, (name,))
new_name = crsr.fetchone()[0]
 

Несколько моментов, на которые следует обратить внимание:

  • мы используем a ? в SELECT инструкции в качестве заполнителя для значения, для которого мы запрашиваем
  • мы устанавливаем LIMIT 1 в SELECT инструкции, чтобы гарантировать, что возвращается не более одной строки, поскольку вы хотите присвоить результат одной переменной.
  • передаваемые значения crsr.execute должны быть кортежем, даже если имеется только одно значение
  • возвращаемое значение crsr.fetchone равно a tuple , хотя мы извлекаем только один столбец.