Задать вопрос

Почему не видит глобальную переменную?

Создается бд:
def sql_start():
    global base, cur
    base = sq.connect('data.db') #подключаемся к бд, если её нет: создает
    cur = base.cursor()
    if base: # выводится при успешном подключении
        print("База данных успешно подключена!")
    base.execute('CREATE TABLE IF NOT EXISTS rap(tracks, names)')
    base.commit()

Тут из нее пытаюсь получить данные:
def sql_read():
    for ret in cur.execute('SELECT * FROM rap').fetchall():
        return ret[1]

Выдает ошибку:
in sql_read
for ret in cur.execute('SELECT * FROM rap').fetchall():NameError: name 'cur' is not defined
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
1.Ну, global base, cur вы указали. Но чтобы они работали, объявлять их нужно перед всеми функциями.
2.Не стоит подобным образом подключаться к базе. Если нет каких-то особых требований (а я более чем уверен, что их нет), лучше каждый раз создавать новое подключение, после чего закрывать его (или использовать контекстный менеджер)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽