У меня проблема с использованием экземпляра класса в Python. Ive создал новый класс ora, который наследует класс connect из пакета cx_Oracle. Когда я пытаюсь ту запустить этот код, я Recive информацияЭкземпляр класса в Python
Файл "pyt.py", строка 12, в myquery ora.myConnect.cursor() AttributeError: объект 'NoneType' не имеет атрибута 'курсор'
Таким образом, Python canwom распознает, что в ora.myConnect хранится ссылка на экземпляр. Я не знаю t know what can be reason of this error and what it
с неправильным кодом.
from cx_Oracle import connect
class ora(connect):
myConnect = None
def __init__(self,connstr):
ora.myConnect = connect.__init__(self,connstr)
def myquery(self):
ora.myConnect.cursor()
ora.myConnect.cursor.execute("SELECT * FROM table")
ora.myConnect.cursor.close()
connstr = 'user/[email protected]:port/sid'
connection = ora(connstr)
connection.myquery()
connection.close()
EDIT
I ve tried to replace ora to self but still Python don
т имеют доступ к примеру
from cx_Oracle import connect
class ora(connect):
myConnect = None
def __init__(self,connstr):
self.myConnect = connect.__init__(self,connstr)
def myquery(self):
self.myConnect.cursor()
self.myConnect.cursor.execute("SELECT * FROM table")
self.myConnect.cursor.close()
Ошибка: self.myConnect.cursor() AttributeError: объект 'NoneType' не имеет атрибута 'курсор'
EDIT2 Этот код работает без ООП, для меня self.myConnect sholud refere сть в экземпляр объекта, и этот объект должен содержать метод курсора()
import cx_oracle
connstr = 'user/[email protected]:port/sid'
connection = cx_oracle.connect(connstr)
cursor = connection.cursor()
cursor.execute("SELECT * FROM table")
cursor.close()
connection.close()
'self.myConnect = connect .__ init __ (self, connstr)' нечетно. Кажется маловероятным, чтобы метод '__init__' возвращал курсор. Вы уверены, что понимаете, как должен работать класс, который вы продлеваете? – beerbajay
На основании [документации здесь] (http://cx-oracle.sourceforge.net/html/module.html#cx_Oracle.connect) Я бы сказал, что вы действительно не должны расширять 'connect', как вы это делали. Вместо этого просто вызовите 'cx_Oracle.connect()' из вашего '__init__' и сохраните соединение как' self.myConnect'. – beerbajay
self.myConnect sholud возвращают ссылку на экземпляр объекта, например без ООП этот код работает импорт cx_Oracle connstr = "пользователь/пароль @ хост: порт/Сид соединение = cx_oracle.connect (connstr) курсора = соединение. курсор() курсор.execute ("SELECT * FROM table") cursor.close() connection.close() – browarq