#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
равно atuple
, хотя мы извлекаем только один столбец.