Я написал этот кусок кода, где я пытаюсь добавить новую строку в таблицу (база данных SQLite)TypeError («индексы списка должны быть целыми числами, а не ул»)
@get('/inventory/add')
def inventory_add(db):
db.execute("INSERT INTO inventory (name, category, location, date, amount) VALUES (?, ?, ?, ?, ?)", (item['name'], item['category'], item['location'], item['date'], item['amount']))
db.commit()
В первом, когда я казнены это я получил:
NameError("global name 'item' is not defined",)
так что я выкопал вокруг интернет-ап в моей неопытности с питоном я решил объявить элемент в виде списка в надежде, что он будет работать:
item=[]
@get('/inventory/add')
def inventory_add(db):
db.execute("INSERT INTO inventory (name, category, location, date, amount) VALUES (?, ?, ?, ?, ?)", (item['name'], item['category'], item['location'], item['date'], item['amount']))
db.commit()
Таким образом, после выполнения кода я получил это:
TypeError('list indices must be integers, not str',)
Ваш «элемент» - это список. Когда вы индексируете его с помощью '[]', индекс должен быть целым числом. 'item ['location']' недопустимо, 'item [0]' будет действительным (но не обязательно правильным). В качестве альтернативы используйте словарь: 'item = {}'. Затем строковые индексы (фактически, ключи) являются законными. – DyZ
Я попробовал 'item = {}', но когда я запустил его, я получаю: 'KeyError: 'name'' – JDoe
Покажите код, который вы использовали для инициализации 'item'. – DyZ