@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()) или как-то по-другому?
  • Вопрос задан
  • 42 просмотра
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
20 окт. 2020, в 22:57
5000 руб./за проект
20 окт. 2020, в 21:37
300000 руб./за проект
20 окт. 2020, в 21:18
500 руб./за проект