pyodbc eliminar cadenas de unicode

Estoy usando pyodbc para conectar sqlserver y debajo está mi cadena de conexión. Todo es correcto, pero los resultados se devuelven como una cadena Unicode. Tengo el CHARSET = UTF8 en la cadena de conexión, pero ¿sigue siendo una cadena Unicode?

¿Hay alguna forma en que pueda limitarlo utilizando el parámetro de conexión?

No quiero llamar a una función adicional para convertir mi Unicode a cadenas normales.

import pyodbc as p connstr= 'DRIVER={SQL Server};SERVER=USERNAME\SQLEXPRESS;DATABASE=TEST;Trusted_Connection=yes;unicode_results=True;CHARSET=UTF8' conn = p.connect(connstr) print conn cursor = conn.cursor() result = cursor.execute("select * from employee1") for each in result: print each 

No puede manejar este problema en la cadena de conexión. SQL Server no tiene una propiedad CHARSET en su configuración de conexión odbc, por lo que no le hará ningún bien.

El problema general que está teniendo es que los datos son unicode en la base de datos. El tipo de datos para esa columna es nvarchar, es un tipo de datos extendido (UTF-16 … podría ser UC-2 en Windows, no puedo recordar) para incluir caracteres de datos internacionales.

Sus opciones son convertir los datos mediante conversión en la consulta de selección, por ejemplo:

 SELECT CAST(fieldname AS VARCHAR) AS fieldname 

o convertirlo en python, por ejemplo:

 # to utf-8 row.fieldname.encode('utf8') # to ascii, ignore non-utf-8 characters row.fieldname.encode('ascii', 'ignore') # to ascii, replace non-utf-8 characters with ? row.fieldname.encode('ascii', 'replace') 

Si no necesita caracteres internacionales, puede almacenar los datos en varchar en lugar de nvarchar.