Задать вопрос
@alekssamos
Программист любитель

Как исправить sqlite3.Row object does not support item assignment" ошибку?

import sqlite3
def _getSettings(uid):
	with sqlite3.connect(sqlitefilename) as conn:
		conn.row_factory = sqlite3.Row
		cursor = conn.cursor()
		sql = r"..."
		cursor.execute(sql, [uid])
		return cursor.fetchone()

Там разные типы данных. Есть и числа, и строки.
Мне нужно эти настройки дальше поменять. При этом появляется ошибка:
'sqlite3.Row' object does not support item assignment".

Как сделать? return copy(cursor.fetchone()) или как-то по-другому?
  • Вопрос задан
  • 464 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя Александр К ответам на вопрос (2)
shabelski89
@shabelski89
engineer
Покажите пример sql запроса и переменных которые вы подставляете.
sql = r"..."
    cursor.execute(sql, [uid])


там должно быть такого вида:
id = 123
    name = 'alekssamos'
    sql = "SELECT * FROM TABLE WHERE id = ? and name = ?"
    cursor.execute(sql, (id, name))


в execute подставляется sql запрос и переменные для вставки вместо знаков ? . Переменные передаются кортежем (id, name), если переменная только одна то всё равно кортеж (id,). Если вы хотите подставить значения из списка, то лучше подготовить placeholder.
Ответ написан