Как кодировать строки Unicode с помощью pyodbc для сохранения в наборе данных SAS?

Я использую Python для чтения и записи наборов данных SAS, используя pyodbc и драйверы SAS ODBC. Я могу загрузить данные отлично, но когда я сохраняю данные, используя что-то вроде:

 cursor.execute('insert into dataset.test VALUES (?)', u'testing') 

… Я получаю pyodbc.Error: ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)') Ошибка pyodbc.Error: ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)') .

Проблема заключается в том, что я передаю строку в Юникоде; что мне нужно сделать, чтобы справиться с этим?

2 Solutions collect form web for “Как кодировать строки Unicode с помощью pyodbc для сохранения в наборе данных SAS?”

Вы знаете, какой символ кодирует ваша база данных? Если это так, вы можете попробовать кодировать строку Unicode перед выполнением запроса. Поэтому, если ваша база данных ожидает строки utf-8, вы можете попробовать что-то вроде:

 encoding = 'utf-8' # or latin1 or cp1252 or something s = u'testing'.encode(encoding) cursor.execute('insert into dataset.test VALUES (?)', s) 

Вы говорите: «Я могу очень хорошо загружать данные» … означает ли это, что вы можете загружать данные, содержащие символы, которые НЕ относятся к исходной кодировке, используемой на вашей платформе (предположительно, cp1252 в Windows, но, пожалуйста, подтвердите)? Каков тип данных SAS первого столбца вашего набора данных SAS?

В этой статье в документах SAS показано, как вы можете узнать кодировку, используемую в наборе данных SAS.

Кодировка указана в документации SAS ODBC . Однако, похоже, вы не используете SAS ODBC (т.е. скрипт на языке SAS, доступ к данным, отличным от SAS).

Python - лучший язык программирования в мире.