J'ai des difficultés à interroger mon serveur MSSQL à l'aide de PyODBC.
Je pense que la raison en est que j'ai des colonnes qui sont nommées en utilisant l'unicode. Ces colonnes proviennent du pivotement d'une seule colonne de mes données principales.
La colonne en question est "afkastningsgrad_primær_drift".
Une idée de la façon dont je pourrais exécuter cette requête ? (construire une vue sur le serveur et renommer la colonne n'est pas une option en raison de mon manque de propriété du serveur).
SQL :
WITH dataTable AS (
SELECT
KredsEjdNr, Navn, Vaerdi
FROM qryEjendomsData
WHERE
RegnskabsAar = 2016
AND Projekt = 1710
AND Navn IN (
'ekm_ko' , 'afkastningsgrad_primær_drift', 'fremst_pris_maelk'
)
GROUP BY KredsEjdNr, Navn, Vaerdi
),
pivotData AS (
SELECT *
FROM dataTable
PIVOT
(
SUM(Vaerdi)
FOR[Navn] IN (
[ekm_ko], [afkastningsgrad_primær_drift], [fremst_pris_maelk]
)
)
AS pivotTable
)
SELECT
CAST([KredsEjdNr] AS NVARCHAR) AS [kredsEjdNr],
CAST(ekm_ko AS int) AS [EKM pr ko],
[afkastningsgrad_primær_drift] as [Afkastningsgrad],
[fremst_pris_maelk] AS [Fremstillingspris pr. kg EKM]
from pivotData
where [ekm_ko] IS NOT NULL and [fremst_pris_maelk] IS NOT NULL
order by kredsEjdNr
Code Python :
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
connectionstring = 'DRIVER={SQL Server Native Client 11.0};SERVER=server;DATABASE=database;UID=%s;PWD=%s' %(usr,pswd)
conn = pyodbc.connect(connectionstring)
cursor = conn.cursor()
dataList = cursor.execute(unicode(sql)).fetchall()
Erreur :
Traceback (dernier appel le plus récent) : Fichier "data.py", ligne 84, dans dataList = cursor.execute(unicode(sql)).fetchall() UnicodeDecodeError : le codec 'ascii' ne peut pas décoder l'octet 0xc3 en position 183 : ordinal n'est pas dans la plage(128)