0

我正在尝试执行一个简单的 sql 并将结果写入 CSV 输出。但是,代码失败:

<pymssql.Connection object at 0x01EF4AF8>
<_csv.writer object at 0x0B6C3270>
 Traceback (most recent call last):
  File "C:\_WORKSPACE\ReportsInventory\CustomReports\CustomReports.py", line 38, in     <module>
f.writerow(row)
 UnicodeEncodeError: 'ascii' codec can't encode character u'\x96' in position 14: ordinal not in range(128)

我正在运行的数据库是:MSSQLSERVER。我在连接字符串中指定了 charset="ISO-8859-1" 。我知道它击中了一个特殊字符,但是关于如何处理它们以便插入成功的任何想法?

在此先感谢,西马克

我的完整代码如下:

import pymssql
import csv

import datetime 
import re
import sys
from config import config

user=r'user'
database = config['ProdDatabase']
connection = pymssql.connect(config['ProdHost'], user, config['ProdPassword'],    database,charset="ISO-8859-1")
connLog = pymssql.connect(config['ProdHost'], user, config['ProdPassword']
print connection

cursor = connection.cursor()

query = """ SELECT dbname,ReportType,ReportID,Report,ReportDriver,FilteredColumn,Filter,FilteredConditionValue     from tempReports """

cursor.execute(query)


data=cursor.fetchall()

f =    csv.writer(open("C:\\_WORKSPACE\\ReportsInventory\\CustomReports\\customreports.csv","w"))
print f
for row in data:
    f.writerow(row)
cursor.close()
f.close()
connection.close()
4

1 回答 1

0
data=cursor.fetchall()

# encode characters
data =[c.encode('ascii','ignore') for c in data]

f = csv.writer(open("C:\\_WORKSPACE\\ReportsInventory\\CustomReports\\customreports.csv","w"))
print f
for row in data:
    f.writerow(row)
cursor.close()
f.close()
connection.close()
于 2014-08-29T16:47:24.283 回答