Обновить колонку в таблице значением переданным как аргумент

Возможно ли обновить колонку в таблице значением переданным как аргумент?

Есть код:

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()
→ Ссылка