Как мне кодировать строки Unicode, используя pyodbc для сохранения в наборе данных SAS? - PullRequest
0 голосов
/ 25 мая 2010

Я использую 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)') ошибку.

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

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Знаете ли вы, какую кодировку символов ожидает ваша база данных? Если это так, вы можете попробовать кодировать строку 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)
0 голосов
/ 25 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...