Используйте подключение к БД в другом файле

#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 находятся в одном каталоге.