#python #sql #database #orm
#питон #sql #База данных #орм
Вопрос:
Как я могу использовать инициализированное соединение в python с базой данных в одном файле и использовать его в другом файле?
Например,
db_connect.py
from sqlalchemy import create_engine, Column from clickhouse_sqlalchemy import get_declarative_base, types, make_session def get_connection(uri): engine = create_engine(uri) session = make_session(engine) return session
main.py
from db_connect import get_connection uri = 'clickhouse://default:@*.*.*.*:8123/my_table' session = get_connection(uri)
connection_use.py
# Here I want to use my initialized conneciton `session` a = session.query(...).filter_by(...)
Я хочу это сделать, потому что процесс инициализации занимает много времени, и я делаю запросы много раз в разных местах. Может быть, использовать это соединение в качестве класса? Но я все равно ввел его в main.py
Комментарии:
1. Установите глобальную переменную «сеанс» «не в «main.py» но в модуле (лучше: в функции в модуле). Затем вы можете импортировать переменную так же, как вы импортируете функции (после того, как она была инициализирована объектом подключения).
Ответ №1:
Переехать session = get_connection(uri)
в db_connect.py (конец). Таким образом, сеанс инициализируется при первом импорте db_connect.
в connection_use.py:
from .db_connect import session a = session.query(...)
Примечание: Это не самый красивый способ сделать это, просто минимальные изменения, чтобы ваш пример работал. Также инструкция import предполагает, что python 3 и db_connect находятся в одном каталоге.