SQLite3 Update

У меня есть настройки базы данных с Python и sqlite3. Мне нужно обновить базу данных, чтобы я мог изменить информацию об элементе.

Текущий код у меня есть:

itemname = e0.get()
quantity = e1.get()
manufacturer = e2.get()
itemnumber = e3.get()
price = e4.get()
curriculumlink = e5.get()
yeargrouplink = e6.get()
location = e7.get()

Все они взяты из полей ввода tkinter, в настоящее время они содержат информацию, которую я загрузил в них, основываясь на той информации, которая уже есть в базе данных об элементе.

cursor = db.cursor()
sql = "UPDATE items SET quantity = '%s' WHERE name = '%s';" % quantity.strip(), itemname.strip()
cursor.execute(sql)
db.commit()

Этот код обнаруживает ошибку и не обновляет количество. Если у кого-то есть какие-либо предложения по этому поводу, я был бы очень признателен.

Тем не менее, есть ли способ обновить все свойства выше в одном SQL-выражении. Все поля в базе данных совпадают с именами ввода пользователя выше.

Спасибо за ваше время:)

1 ответ

Решение
sql = "UPDATE items SET quantity = '%s' WHERE name = '%s';" % (quantity.strip(), itemname.strip())

исправит вашу проблему (она не интерпретировала кортеж без круглых скобок), но вы действительно должны использовать механизм sqlite3 для выполнения форматирования

cursor.execute("UPDATE items SET quantity=?WHERE name=?",[qty,name])

и действительно, вы, вероятно, должны использовать ORM, такой как sqlalchemy, который позволяет легко переключать движки баз данных и представляет все данные в виде классов

 class Item(Base):
     __tablename__ = "items"
     name = Column(String,primary_key=True)
     qty = Column(Integer,default=0)
Другие вопросы по тегам