Я не знаю, что внезапно вызвало это (я недавно переустановил Anaconda и все мои библиотеки python, но вернулся к тем же версиям, что и раньше), но когда sqlalchemy пытается подключиться к серверу SQL, происходит сбой, потому чтоищет версию сервера и пытается выполнить на ней строковую операцию.
У меня не было проблем до переустановки пакетов.Я бы подключился так:
sqlalchemy_conn_string = 'mssql+pyodbc://myDSN'
sqlalchemy.create_engine(sqlalchemy_conn_string, module=pypyodbc)
Затем он попадает в файл с именем pyodbc.py и завершается с ошибкой в этой функции:
def _get_server_version_info(self, connection):
try:
raw = connection.scalar("SELECT SERVERPROPERTY('ProductVersion')")
except exc.DBAPIError:
#...
else:
version= []
r = re.compile(r'[.\-]')
for n in r.split(raw): # culprit here
try:
version.append(int(n))
except ValueError:
version.append(n)
return tuple(version)
Out[1]: TypeError: cannot use a string pattern on a bytes-like object
Это потому, что на этом этапеraw
не является строкой, которая может быть разделена:
# from PyCharm's debugger window
raw = {bytes}b'13.0.5026.0'
На данный момент, я не знаю, должен ли я отправлять отчет об ошибках для sqlalchemy и / или pypyodbc, или есть что-то, что я могусделать, чтобы исправить это сам.Но мне бы хотелось решение, которое не включает редактирование кода для sqlalchemy на моем собственном компьютере (например, обработку байт-подобного объекта), потому что у нас есть другие члены команды, которые также будут скачивать vanilla sqlalchemy & pypyodbc и выиграть 'не уверен в редактировании этого исходного кода.