SqlAlchemy, почему движок создает больше соединений, чем «разрешено»Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SqlAlchemy, почему движок создает больше соединений, чем «разрешено»

Сообщение Anonymous »


Ситуация

Я переношу некоторый код из pyodbc в SqlAlchemy. Я заметил, что во время некоторых тестов я получаю больше активных соединений, чем раньше. Старый код pyodbc поддерживает не более двух соединений, а новый SqlAlchemy достигает 7.

Чтобы проверить соединения, я просто запускаю запрос из базы данных с помощью SSMS во время выполнения тестов. Я использую pyodbc==5.0.1 и SQLAlchemy==2.0.23

Цель

Я хочу, чтобы количество подключений было не более 5. Я пробовал возиться с poolclass=NullPool, pool_size, max_overflow, pool_recycle, pool_timeout и т. д., но ничего не работает. Как всегда ограничивать количество подключений ниже определенного значения?

Вот приблизительный пример моего кода на Python

импортировать панд как pd импортировать sqlalchemy как sa Connection_url = sa.engine.URL.create("mssql+pyodbc", query={"odbc_connect": "Driver={ODBC Driver 17..."}) двигатель = sa.create_engine( URL_соединения, fast_executemany = fast_executemany, # пулкласс=NullPool # это Pool_size=1, # или это max_overflow=2 # и это ни на что не влияет ) защита get_connection(): глобальный двигатель вернуть двигатель.connect() Защиту sql_query (запрос, параметры): соединение = get_connection() res = pd.read_sql_query(запрос, соединение, параметры=параметры) соединение.закрыть() защита some_test_mock(): рез = sql_query("1") рез = sql_query("2") рез = sql_query("3") для меня в диапазоне (2): для j в диапазоне (2): res = sql_query(f"{i} {j}") рез = sql_query("4") Запрос для проверки соединений:
ВЫБРАТЬ DB_NAME(dbid) как DBName, COUNT(dbid) как NumberOfConnections, логин как LoginName ОТ sys.sysprocesses с (nolock) ГДЕ дбид > 0 и эцид=0 и имя пользователя = 'testsqluser' ГРУППА ПО dbid, имя пользователя --количество подключений увеличивается с 1,2,3 до 7
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»