Python таблицы редактирование по переменной SQLite
Почему оно не редачит именно по переменной, по тексту который я напишу оно меняет
ans_tabl = input("Введіть таблицю, з якою ви будете працювати: ")
name_column = input("Введіть назву стовбця в якому ви хочете змінити параметр: ")
value_column = input("Введіть параметр який ви хочете змінити: ")
your_recording = input("Введіть новий параметр: ")
cur.execute("""UPDATE {tabl} SET {nc} = '{vc}' WHERE {nc} = '{yc}'""".format(tabl=ans_tabl, nc=name_column, yc=your_recording, vc=value_column))
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
Создание таблицы:
CREATE TABLE "ttable" ("ncol" TEXT)
Проверка исходных данных:
cursor = conn.execute("SELECT * FROM ttable").fetchall()
>>> [('1',), ('2',), ('3',), ('4',)]
Проверка кода из вопроса:
import sqlite3
db = '1219138.db'
table = input("Введіть таблицю, з якою ви будете працювати: ")
nc = input("Введіть назву стовбця в якому ви хочете змінити параметр: ")
vc = input("Введіть параметр який ви хочете змінити: ")
yc = input("Введіть новий параметр: ")
conn = sqlite3.connect(db)
cursor = conn.cursor()
cursor.execute("UPDATE {table} SET {nc} = {yc} WHERE {nc} = {vc}".format(table=table, nc=nc, vc=vc, yc=yc))
conn.commit()
>>> Введіть таблицю, з якою ви будете працювати: ttable
>>> Введіть назву стовбця в якому ви хочете змінити параметр: ncol
>>> Введіть параметр який ви хочете змінити: 2
>>> Введіть новий параметр: 9
Проверка данных:
cursor = conn.execute("SELECT * FROM ttable").fetchall()
>>> [('1',), ('9',), ('3',), ('4',)]
Если же Введіть новий параметр: будет содержать текст, например test, то получим ошибку:
sqlite3.OperationalError: no such column: test
Поэтому передаём текст в кавычках:
Введіть таблицю, з якою ви будете працювати: ttable
Введіть назву стовбця в якому ви хочете змінити параметр: ncol
Введіть параметр який ви хочете змінити: 4
Введіть новий параметр: "test"