class MyAddon(pyxbmct.AddonDialogWindow):
def __init__(self, title=''):
super(MyAddon, self).__init__(title)
self.mysql_connect()
self.populate()
def populate(self):
categories = self.read_data()
def read_data(self):
query = ("SELECT category FROM test")
cursor = connection.cursor()
categories = cursor.execute(query)
return categories
def mysql_connect(self):
global connection
try:
connection = mysql.connector.connect(**config).cursor()
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
xbmc.executebuiltin('Notification(Error!, Bad user name of password)')
elif err.errno == errorcode.ER_BAD_DB_ERROR:
xbmc.executebuiltin('Notification(Error!, Database does not exist)')
else:
xbmc.executebuiltin('Notification(Error!, {0})'.format(err))
Я разрабатываю надстройку Python для Kodi. Я получаю ошибку Global name 'connection' is not defined
при попытке использовать глобальную переменную для подключения к базе данных. Я не могу прочитать глобальное переменное соединение из функции read_data. Я уверен, что это не проблема прямого обращения, потому что я тестировал ее таким образом.Управление соединением базы данных с глобальным глобальным именем исчезает
Целью использования глобальной переменной для соединения является повторное использование соединения во всех функциях без создания нового соединения каждый раз.
Пожалуйста, включите * full traceback *. –
Обратите внимание, что ваш код, как написано, будет * заменять * глобальное 'соединение' каждый раз, когда вы создаете экземпляр; вы не используете ничего здесь. Кстати, вы можете использовать атрибут class вместо глобального; 'connection = None' на уровне класса, тогда' if not MyAddon.connection: MyAddon.connection = ... '; любые попытки * прочитать * 'self.connection' найдут общий атрибут класса. –