0

我正在使用 Python 读取和写入 SAS 数据集,使用pyodbcSAS 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)')错误。

问题似乎是我正在传递一个 unicode 字符串;我需要做什么来处理这个?

4

2 回答 2

1

你知道你的数据库需要什么字符编码吗?如果是这样,您可以在执行查询之前尝试对 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)
于 2010-05-24T21:42:37.147 回答
0

您说“我可以很好地加载数据”……这是否意味着您可以加载包含不在您平台上使用的本机编码中的字符的数据(大概是 Windows 上的 cp1252,但请确认)?SAS 数据集第一列的 SAS 数据类型是什么?

SAS 文档中的这篇文章旨在展示如何找出 SAS 数据集中使用的编码。

SAS ODBC 文档提到了编码。但是,您似乎没有使用 SAS ODBC(即访问非 SAS 数据的 SAS 语言脚本)。

于 2010-05-24T23:09:12.200 回答