SQLite курсор в Python с оператором

У меня есть следующий код:

def executeOne(self, query, parameters):
    with self.connection as cursor:         
        cursor.execute(query, parameters)
        return cursor.fetchone()

Когда я вызываю этот метод, он выдает мне следующую ошибку: AttributeError: 'sqlite3.Connection' object has no attribute 'fetchone'Что я делаю неправильно?

1 ответ

Решение

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что в классе соединения отсутствует метод с именем fetchone, Вам нужно добавить .cursor() создать экземпляр курсора, а затем обернуть его закрытием, чтобы он работал в операторе with.

from contextlib import closing
with closing(self.connectio.cursor()) as cur:

Самый простой способ справиться с этим - удалить with заявление и вручную закрыть cursor,

cur = self.connection.cursor() 
try:
    cur.execute(query, parameters) 
    return cur.fetchone()
finally:
    cur.close() 
Другие вопросы по тегам