我将任意查询发布到服务器端,在那里执行它并将结果集发送回客户端。一个典型的查询如下所示:
select Наименование from sys_Атрибут where Наименование = 'Район'
如您所见,它包含非拉丁文字。不执行此查询。但是,如果我这样写
select Наименование AS attr from sys_Атрибут where Наименование = 'Район'
然后,没关系。服务器端代码如下所示:
#--coding: utf-8
from __future__ import unicode_literals
...
import pyodbc # tried both of them
import pypyodbc #
def resultset(request):
query = request.POST['query']
query = u'{}'.format(query)
cnx = pyodbc.connect("DRIVER=FreeTDS;SERVER=192.168.0.1;PORT=1433;
DATABASE = mydatabase;UID=sa;PWD=password;TDS_Version=7.0;ClientCharset=UTF8;")
cursor = cnx.cursor()
cursor.execute(query.encode('utf-8'))
columns = [desc[0] for desc in cursor.description] # sometimes error happens at this point
data = []
output = []
for row in cursor:
data.append(dict(zip(columns, row)))
output = '{items:'
output += jsonpickle.encode(data) # sometimes at that point
output += '}'
return HttpResponse(output)
整个问题在于表字段的名称。我想,为了解决这个问题,我应该以不同的方式完成这部分编码data.append(dict(zip(columns, row)))
。