@Anire1985

Как правильно сравнить данные с переменной?

Мне нужно прочитать данные с ячейки, добавить их в переменную и затем изменить данные только у тех ячеек которые равны данным переменной. Всё было просто когда нужно было сравнивать цифры, со словами проблема. В переменную записываются запятые или скобки, и даже после удаления их, всё равно возникают ошибки.
import sqlite3
new_users2 = [
('Sem S', '1', 'r', 'p', '10.02.2010', ),
('Kim R', '3', 'r', 'p', '10.02.2010', )
]
con = sqlite3.connect(":memory:")
with con:
    c = con.cursor()
    c.execute('''CREATE TABLE brothers
    (id INTEGER PRIMARY KEY,
    name VARCHAR (30) NOT NULL,
    ves INTEGER NOT NULL,
    flag varchar(5) NOT NULL,
    status varchar(5) NOT NULL,
    last_date varchar (15))''')
    c.executemany('INSERT INTO brothers(name, ves, flag, status, last_date ) VALUES (?,?,?,?,?)', new_users2)
    for row in c.execute('SELECT * FROM brothers'): print(row)

c.execute("SELECT name from brothers;")
user = c.fetchone()  # то самое место которое вызывает ошибку
c.execute(f"UPDATE brothers SET ves=ves+500 WHERE name = {user};")


это вырезка с основного кода
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
@o5a
Во-первых, fetchone возвращает кортеж, а не единственное значение, т.е. для получения имени нужно брать не user, а user[0]
Во-вторых, для запросов с внешними значениями вместо форматирования строки лучше использовать передачу параметров.
c.execute(f"UPDATE brothers SET ves=ves+500 WHERE name = ?", (user[0], ))


И в целом этот код изменит значение только у записей первого пользователя выборки таблицы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Строковые значения в MySQL необходимо брать в кавычки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы