Как расширить класс OracleCursor от cx_Oracle

Используя Python 2.7.12 и пакет cx_Oracle Я пытаюсь создать расширенный класс того, что пакет вызывает OracleCursor . Я просто хочу наследовать методы из суперкласса и распространяться на некоторые пользовательские методы.

Сначала я получаю OracleCursor

 import cx_Oracle conn = cx_Oracle.connect(username, password, dsn) cursor = conn.cursor() 

и тогда у меня есть следующее

 >>> type(cursor)Out[6]: OracleCursor >>> isinstance(cursor, cx_Oracle.Cursor) True 

Можно было бы подумать, что это достигается

 class ExtendedCursor(cx_Oracle.Cursor): def hello_world(self): print('Hello world') extended = ExtendedCursor(cursor) 

но я получаю TypeError: argument 1 must be cx_Oracle.Connection, not OracleCursor . Для меня эта ошибка не имеет смысла. Кроме того, я не могу использовать OracleCursor как мой суперкласс, так как он не распознается как класс.

One Solution collect form web for “Как расширить класс OracleCursor от cx_Oracle”

Курсор возвращается из объекта Connection. Вам нужно создать настраиваемое соединение, которое возвращает ваш ExtendedCursor.

 import cx_Oracle as cxo class MyCursor(cxo.Cursor): def helloWorld(self): print "helloWorld" class MyConnection(cxo.Connection): def cursor(self): return MyCursor(self) if __name__ == '__main__': conStr = '<user>/<password>@127.0.0.1:1521/xe' db = MyConnection(conStr) c = db.cursor() print c c.execute('select 1+1 from dual') print(c.fetchall()) c.helloWorld() 

возвращает:

 <__main__.MyCursor on <__main__.MyConnection to ...@127.0.0.1:1521/xe>> [(2,)] helloWorld 
  • Могу ли я предоставить метод класса Python в качестве параметра?
  • Создание списка объектов из списка списков
  • Класс искателя, написанный в python, выдает ошибку атрибута
  • Автоматическая регистрация методов класса с использованием декоратора
  • Как сделать метод класса в python?
  • Python - лучший метод вызова суперкласса?
  • ООП: методы геттера / сеттера
  • наследование объектов и вложенный cmd
  • Неплохо хранить все экземпляры класса в поле класса?
  • Выполнение порядка метода в модуле python
  • Как создать приложение модульным способом?
  •  
    Interesting Posts for Van-Lav

    Reference requirements.txt для install_requires kwarg в файле setup.ools setup.py?

    Какой протокол следует использовать для потоковой передачи аудио (не вживую)?

    Как разрешить пользователям входить в защищенный флажок-rest-api в Angularjs, используя HTTP-аутентификацию?

    Насколько хорошо Python «течет» с HTML по сравнению с PHP?

    Как установить sqlite3 на Python?

    Помещение символа Copyright в файл Python

    Разработка с Django + Celery без запуска `celeryd`?

    Сельдерей – программно перечислить работников

    BeautifulSoup get_text не разделяет все теги и JavaScript

    Преобразование разделенной строки в кортеж приводит к «слишком большому количеству значений для распаковки»,

    python – доступ к атрибутам суперкласса

    ImportError: нет модуля с именем cv2.cv

    Использовать Scrapy для обхода локального XML-файла – Запустить адрес локального файла URL-адреса

    Почему модули, которые не были импортированы в «sys.modules» в Python 3?

    python набирает наибольший свободный квадрат во вложенном списке

    Python - лучший язык программирования в мире.