acg99 Ответов: 1

Ошибка извлечения данных с помощью Python из MS SQL server


Мне нужно получить таблицу из MS SQL, но я получаю ошибку:
ProgrammingError: ('ODBC SQL type -151 еще не поддерживается. столбец-индекс=3 тип=-151', 'HY106')

Есть идеи?

Что я уже пробовал:

import pyodbc

cnxn = pyodbc.connect("Driver={ODBC Driver 13 for SQL Server};"
                      "Server=localhost;"
                      "Database=AdventureWorks2012;"
                      "Trusted_Connection=yes;")
cursor = cnxn.cursor()
cursor.execute('SELECT * FROM HumanResources.Employee')

row = cursor.fetchone()
while row:
    print (row[0])
    row = cursor.fetchone()

1 Ответов

Рейтинг:
2

Thomas Daniels

Ваш драйвер Python не поддерживает тип ODBC SQL, который называется "-151" (я не смог найти, что это за фактический тип), поэтому он не может просто прочитать таблицу, поэтому вам нужно будет добавить выходной преобразователь для типа -151, чтобы водитель знал, что с ним делать. Вот пример выходного преобразователя, вы можете преобразовать его в то, что вам нужно для вашего типа: Использование функции выходного преобразователя · mkleehammer/pyodbc Wiki · GitHub[^]


Richard Deeming

Сложно искать отрицательные числа в Google - он склонен думать, что вы хотите исключить это число из результатов поиска. :)

Насколько я могу судить, -151 является SQL_SS_UDT - определяемый пользователем тип.

acg99

Столбец в таблице SQL, создающий ошибку, имеет тип данных hierarchyID. Я понятия не имею, что такое шляпа. Это выглядит как строка текста с x где-то в нем: вот ссылка, чтобы увидеть, как это выглядит: https://snag.gy/1aNCuj.jpg
Эта база данных является образцом базы данных, которую Microsoft предоставляет AdventureWorks2012.
Как это будет работать, Преобразуя этот столбец в строку с помощью выходного преобразователя?

Thomas Daniels

Я точно не знаю, что такое hierarchyID, но вы можете попробовать начать с настройки примера, который я связал с -151, а затем отладить, чтобы перейти в ваш метод конвертера и выяснить, что содержит dto_value (в коде Python).