Я пытаюсь передать атрибут MultiSubnetFailover в строку подключения с помощью механизма sqlalchemy. Хотя передача параметров в pyodbc довольно гладкая, pymssql отказывается принимать какие-либо параметры в строке подключения.
Это не удалось
attributes = "?driver=ODBC+Driver+17+for+sql+server"
engine = create_engine(
'mssql+pymssql://' +
"username" + ':' +
"password" + '@' +
"127.0.0.1" + "/" +
"databaseName" + attributes)
с ошибкой
Traceback (most recent call last):
File "C:/Users/ChaitanyaB/PycharmProjects/Test/TestUpdate.py", line 35, in <module>
(TblServices.OrganizationId == '72A229D4-186B-4B0E-A98F-7DB5DB3566DB')
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\query.py", line 2423, in all
return list(self)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\query.py", line 2571, in __iter__
return self._execute_and_instances(context)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\query.py", line 2584, in _execute_and_instances
close_with_result=True)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\query.py", line 2575, in _connection_from_session
**kw)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\session.py", line 893, in connection
execution_options=execution_options)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\session.py", line 898, in _connection_for_bind
engine, execution_options)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\orm\session.py", line 334, in _connection_for_bind
conn = bind.contextual_connect()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\engine\base.py", line 2039, in contextual_connect
self._wrap_pool_connect(self.pool.connect, None),
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\engine\base.py", line 2074, in _wrap_pool_connect
return fn()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 376, in connect
return _ConnectionFairy._checkout(self)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 713, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 480, in checkout
rec = pool._do_get()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 1060, in _do_get
self._dec_overflow()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\util\langhelpers.py", line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 1057, in _do_get
return self._create_connection()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 323, in _create_connection
return _ConnectionRecord(self)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 449, in __init__
self.connection = self.__connect()
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\pool.py", line 607, in __connect
connection = self.__pool._invoke_creator(self)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\engine\strategies.py", line 97, in connect
return dialect.connect(*cargs, **cparams)
File "C:\Users\ChaitanyaB\NewVirtualEnvironment\lib\site-packages\sqlalchemy\engine\default.py", line 385, in connect
return self.dbapi.connect(*cargs, **cparams)
File "pymssql.pyx", line 578, in pymssql.connect (pymssql.c:9754)
TypeError: connect() got an unexpected keyword argument 'MultiSubnetFailover'
пока работает, если я сделаю атрибуты = ""
Также работает та же строка соединений с pyodbc
attributes = "?driver=ODBC+Driver+17+for+sql+server"
engine = create_engine(
'mssql+pyodbc://' +
"username" + ':' +
"password" + '@' +
"127.0.0.1" + "/" +
"databaseName" + attributes)
Мне интересно, есть ли другой способ передачи атрибута соединения, когда мы используем pymssql. Любая помощь приветствуется.