Khe*_*ben 5 python sql-server encoding sqlalchemy
我使用 pyodbc 模块通过 SQL Alchemy 连接到 MS SQL 服务器。一切似乎都运行良好,直到我开始遇到编码问题。一些非 ascii 字符被替换为 '?'
DB 有一个排序规则“Latin1_General_CI_AS”(我还检查了特定字段,它们保持相同的排序规则)。我开始在调用中选择编码“latin1” create_engine,这似乎适用于西欧字符(如法语或西班牙语,如é),但不适用于复活节欧洲字符。具体来说,我的性格有问题?
我一直在尝试选择Python 文档中所述的其他编码,特别是 Microsoft编码,例如cp1250和cp1252,但我一直面临同样的问题。
有谁知道如何解决这些差异?排序规则“Latin1_General_CI_AS”是否与 Python 编码等效?
我当前连接的代码如下
for sqlalchemy import *
def connect():
return pyodbc.connect('DSN=database;UID=uid;PWD=password')
engine = create_engine('mssql://', creator=connect, encoding='latin1')
connection = engine.connect()
Run Code Online (Sandbox Code Playgroud)
澄清和评论:
?存储?也许我没有正确理解排序规则。latin1, 还多的编码,cp1250并且cp1252(根据 msdn,这显然是在“Latin1_General_CI_AS”上使用的编码)更新:
好的,按照这些步骤,我发现 DB 使用的编码似乎是 cp1252:http ://bytes.com/topic/sql-server/answers/142972-characters-encoding 无论如何,这似乎是一个错误的假设正如答案所反映的那样。
UPDATE2:无论如何,在正确配置odbc驱动程序后,我不需要在Python代码上指定编码。