@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()) или как-то по-другому?
  • Вопрос задан
  • 396 просмотров
Решения вопроса 1
@alekssamos Автор вопроса
Программист любитель
dbCursor = db.cursor()
dbCursor.execute("SELECT * FROM table")
row = dbCursor.fetchone()
rowDict = dict(zip([c[0] for c in dbCursor.description], row))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы