#python #sql #python-3.x #sqlite #sql-insert
Вопрос:
Например, я хочу создать функцию, в которой я добавляю пользователя в свою таблицу «пользователи»:
def add_user(name, id):
cursor.execute("INSERT INTO users VALUES (?, ?, ?)", (name, id))
conn.commit()
(Следует отметить, что столбец » имя «(не переменная) является первым столбцом, а столбец «идентификатор» является третьим столбцом)
Этот код записывает переменную ‘name’ в первый столбец, который является столбцом name, и записывает переменную ‘id’ во второй столбец (который не является столбцом id).
Есть ли способ использовать имена столбцов, чтобы указать, куда писать? Я хочу избежать использования таких решений, как запись текущего значения второго столбца в себя, или добавление к нему 0, или что-то в этом роде.
Ответ №1:
Во-первых, вы используете 3 ?
заполнителя и передаете только 2 значения: name
и id
, поэтому ваш код даже не будет выполняться.
В INSERT
инструкции вы можете указать столбцы, которые будут получать значения, которые вы предоставляете в виде кортежа:
cursor.execute("INSERT INTO users(name, id) VALUES (?, ?)", (name, id))
или:
cursor.execute("INSERT INTO users(id, name) VALUES (?, ?)", (id, name))
В обоих случаях результат один и тот же.
При INSERT INTO users(id, name)...
этом 1 — е ?
соответствует значению столбца id
, а 2 ?
-е соответствует значению столбца name
, поэтому вы должны передавать их значения внутри кортежа в том же порядке.