sql server错误中的aioodbc问号

时间:2018-12-04 13:12:08

标签: sql-server python-3.x aiohttp

我使用aioodbc连接到aiohttp的SQL Server。我在python3中编写了2个函数:

async with aioodbc.create_pool(dsn=dsn, loop=loop, autocommit=True) as pool:
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute(query)
            val = await cur.fetchall()

async def main(request):
    args = request.GET
    ses = request.cookies.get('sess')
    data = []
    try:
        data = await sqlQuery('dbo.sp_roles'+ " " + ses )
   except Exception as e:
        return web.Response(text = dumps({'message':str(e)}), status = 500)) 
   return web.Response(text = dumps(data))

和SQL Server中的存储过程。在此过程中,我将raiserror与西里尔字母一起使用,如下所示:

RAISERROR('пользователь не найден',16, 1)

当我在python函数中捕获Exception as e时,它看起来像

������������ �� ������

SELECT中带有西里尔字符的数据返回正确的值。这只有在我提高时才发生。如何在python中获取正确的错误消息?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。原因是pyodbc旧版本。如果您遇到相同的错误,则必须卸载pyodbc pip uninstall pyodbc并再次安装它(新版本)pip install pyodbc