我使用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中获取正确的错误消息?
答案 0 :(得分:0)
我找到了解决方案。原因是pyodbc旧版本。如果您遇到相同的错误,则必须卸载pyodbc pip uninstall pyodbc
并再次安装它(新版本)pip install pyodbc