Как инициализировать механизм SQL Alchemy, сеанс и таблицу глобально ⇐ Python
-
Anonymous
Как инициализировать механизм SQL Alchemy, сеанс и таблицу глобально
Я разрабатываю приложение на Python, большинство его функций будут взаимодействовать (создавать, читать, обновлять и удалять) с определенной таблицей в базе данных MySQL. Я знаю, что могу запросить эту конкретную таблицу с помощью следующего кода:
engine = create_engine( f"mysql+pymysql://{имя пользователя}:{пароль}@{хост}:{порт}", pool_pre_ping=Истина ) мета = Метаданные(движок) my_table = Таблица( 'моя_таблица', мета, автозагрузка = Верно, схема = имя_базы_данных ) dbsession = создатель сеанса (привязка = двигатель) сеанс = dbsession() # пример запроса к таблице результаты = session.query(my_table).filter(my_table.columns.id >=1) результаты.все() Однако я не понимаю, как сделать эти определения (движок, мета, таблица, сеанс) глобальными для всех моих функций. Должен ли я определить эти вещи в своем init.py, а затем передать их в качестве аргументов функции? Должен ли я определить большой класс и инициализировать его во время инициализации класса?
Моя цель — иметь возможность в любое время запрашивать эту таблицу в любой из моих функций, не беспокоясь о том, что соединение пропало. Согласно документации SQL Alchemy:
Только один раз где-то в глобальной области вашего приложения. Его следует рассматривать как часть конфигурации вашего приложения. Если в пакете вашего приложения есть три файла .py, вы можете, например, поместить строку sessionmaker в файл init.py; с этого момента другие ваши модули говорят «из сеанса импорта моего пакета». Таким образом, все остальные просто используют Session(), а конфигурация этого сеанса контролируется этой центральной точкой.
Хорошо, а как насчет движка, таблицы и мета? Нужно ли мне об этом беспокоиться?
Я разрабатываю приложение на Python, большинство его функций будут взаимодействовать (создавать, читать, обновлять и удалять) с определенной таблицей в базе данных MySQL. Я знаю, что могу запросить эту конкретную таблицу с помощью следующего кода:
engine = create_engine( f"mysql+pymysql://{имя пользователя}:{пароль}@{хост}:{порт}", pool_pre_ping=Истина ) мета = Метаданные(движок) my_table = Таблица( 'моя_таблица', мета, автозагрузка = Верно, схема = имя_базы_данных ) dbsession = создатель сеанса (привязка = двигатель) сеанс = dbsession() # пример запроса к таблице результаты = session.query(my_table).filter(my_table.columns.id >=1) результаты.все() Однако я не понимаю, как сделать эти определения (движок, мета, таблица, сеанс) глобальными для всех моих функций. Должен ли я определить эти вещи в своем init.py, а затем передать их в качестве аргументов функции? Должен ли я определить большой класс и инициализировать его во время инициализации класса?
Моя цель — иметь возможность в любое время запрашивать эту таблицу в любой из моих функций, не беспокоясь о том, что соединение пропало. Согласно документации SQL Alchemy:
Только один раз где-то в глобальной области вашего приложения. Его следует рассматривать как часть конфигурации вашего приложения. Если в пакете вашего приложения есть три файла .py, вы можете, например, поместить строку sessionmaker в файл init.py; с этого момента другие ваши модули говорят «из сеанса импорта моего пакета». Таким образом, все остальные просто используют Session(), а конфигурация этого сеанса контролируется этой центральной точкой.
Хорошо, а как насчет движка, таблицы и мета? Нужно ли мне об этом беспокоиться?
Мобильная версия