@Durilka96

Как передать переменную из одной функции в другую?

суть вопроса заключается в том, каким образом я могу передать переменную которая хранит имя базы данных в разные функции, именно передавать ее...
вот код подключения основной функции, здесь я напрямую вызываю и храню в переменной значение
def connect():
    name_DB = filedialog.askopenfilename(filetypes=(("Database", ".db"),))
    return name_DB


def download():
    # подключение к бд
    lite=connect(shit)
    print(lite)
    sqlite_connection = sqlite3.connect(lite)
...


а как мне передать это значение в другую функцию, чтобы не открывать по 10 раз диалоговое окно? потому что данная функция работает по клику. было б вообще отлично если подключить бд и она работала б фоновом режиме все время работы программы, но нужно знать ее имя для передачи каким то способом в функции
def on_select(event):
    #print(tree.selection())
    # Если привязывались не к событию <<TreeviewSelect>>,
    # то тут нужно проверить, что вообще что-то выбрано:
    if not tree.selection():
        return
    # Получаем id первого выделенного элемента
    selected_item = tree.selection()[0]
    # Получаем значения в выделенной строке
    values = tree.item(selected_item, option="values")
    print(values[0])

и мне этот values[0] нужен для вставки в sql запрос, а чтобы это сделать нужно подключиться к бд, а для этого нужно имя ее передать в эту функцию, делать диалоговое окно при запуске программы(т.е. глобальным ) не вариант
  • Вопрос задан
  • 3864 просмотра
Решения вопроса 3
@Alexa2007
Особо не въехал... но возможно поможет вот

ну или так !!!Но это ЗЛО!!! :
a = '3'
def foo_one(x):
    print(x)
    global a
    a=10

def foo_two(y):
    print(y)

foo_one(a)
foo_two(a)
Ответ написан
Комментировать
@alekssamos
Программист любитель
Может лучше отдельный класс под это сделать?
class db:
    sqlite_connection = sqlite3.connect(lite)
    def fnc1(self):
        self.sqlite_connection # здесь твоя переменная.
Ответ написан
Комментировать
@Black_and_green
Developer - chigrin.xyz
Похоже тебе нужен паттерн singleton.
Т.е. создаешь класс/функцию, которая делает коннект только один раз, а далее возвращает запомненый. + проверяет, что коннект живой и переподключается, т.е. ещё можно запомнить настройки коннекта

class db:
  connection = null
  @staticmethod
  def get_connection():
    if connection is null:
      connection = connect()
    return connection

   def connect():
     ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы