Обновить колонку в таблице значением переданным как аргумент
Возможно ли обновить колонку в таблице значением переданным как аргумент?
Есть код:
import sqlite3
def AddName(X):
with sqlite3.connect('Base.db') as db:
cursor = db.cursor()
query=''' UPDATE base set name = X where Id = 123 '''
cursor.execute(query)
AddName(5)
Нужно, чтобы значение колонки name обновилось значением X, взятым из переданного аргумаента.
Ответы (2 шт):
Автор решения: Denis Rudnitskiy
→ Ссылка
Один из вариантов решения вашей проблемы - использование форматирования строк.
Вот простой пример:
import sqlite3
def AddName(X):
with sqlite3.connect('Base.db') as db:
cursor = db.cursor()
query=f'UPDATE base set name = {X} where Id = 123'
cursor.execute(query)
AddName(5)
Но не забывайте использовать экранирование для предотвращения sql-инъекций.
def AddName(X):
with sqlite3.connect('Base.db') as db:
cursor = db.cursor()
cursor.execute('UPDATE base set name = ? where Id = ?', (X, 123))
AddName(5)
Автор решения: MaxU
→ Ссылка
Лучше сделать так:
def update_name(cursor, name, id):
query=f'UPDATE base set name = ? where Id = ?'
cursor.execute(query, params=(name, id))
with sqlite3.connect('Base.db') as db:
cursor = db.cursor()
update_name(cursor, name=5, id=123)
# ... дальнейшая работа с курсором ...
cursor.commit()