Python pymssql到二进制编码

Python pymssql到二进制编码,python,sql-server,python-3.x,pandas,Python,Sql Server,Python 3.x,Pandas,我知道论坛上有无数关于编码/解码问题的帖子,但在浏览了其中一半之后,我没能找到一个能帮我解决问题的帖子。所以如果它在另一半的某个地方,那就好了 我的问题: 我有一个包含多语言数据的数据库(MS SQL)(Latin1_General_CI_AS COLLATE),我正在使用pymssql和pandas将其转换为数据帧,以便在python之外使用。除了非拉丁字符,所有的作品都很好,我现在完全被卡住了 这是我的(简化的)python 3代码: import pandas as pd import p

我知道论坛上有无数关于编码/解码问题的帖子,但在浏览了其中一半之后,我没能找到一个能帮我解决问题的帖子。所以如果它在另一半的某个地方,那就好了

我的问题:

我有一个包含多语言数据的数据库(MS SQL)(Latin1_General_CI_AS COLLATE),我正在使用pymssql和pandas将其转换为数据帧,以便在python之外使用。除了非拉丁字符,所有的作品都很好,我现在完全被卡住了

这是我的(简化的)python 3代码:

import pandas as pd
import pymssql

def rm_main():

    conn = pymssql.connect(server='***',port=4133, user='***',  charset='UTF-8', password='***', database='**')
    q="""
    SELECT goodmorning FROM myTable
    """
    df = pd.read_sql(q,conn)
    df['encoded_goodmorning'] = df.goodmorning.str.encode('utf-8')

    return df
我的数据库中有一个名为goodmorning的字段,它包含以下字符串:Dzieńdobry

当如上所述调用数据时,仅使用pymssql即可正确检索数据

当我想从pandas中使用read_sql方法时,我得到了一个可怕的问号:Dzie?多布里

使用编码选项,我在正确的方向上得到了一点,如下所示:b'Dziexc5x84 dobry',其中c5 84是我的小拉丁文n的utf十六进制代码,带锐音符。因此,我的内容是完整的,但它不是非常读者友好

现在,我不幸失败的地方是再次把它变成“友好的形式”(因此它只是再次说“Dzieńdobry”)


我在这里忽略了什么?有没有更好的方法来做到这一点?这看起来很明显,但无论我尝试了什么(编码/解码),要么都没有什么区别,要么只是停止了代码。

你能指定表/列
COLLATE
?@MaxU:Latin1\u General\u CI\u ASi我也会尝试
sqlalchemy
+
pyodbc
。不幸的是,我没有访问任何SQL Server的权限,因此我无法自己测试它。您可以指定表/列
COLLATE
?@MaxU:Latin1\u General\u CI\u ASi我也会尝试
sqlalchemy
+
pyodbc
。不幸的是,我没有访问任何SQL Server的权限,所以我无法自己测试它