python pymssql查询结果显示乱码 5C

1.SQLServer默认是GBK编码,若按如下写法
conn=pymssql.connect(host='.',database='25',charset='GBK')
name='中文'

exe_sql = 'select * from Mir_Hum_Info where sChrName =' + '\'' + name + '\''
查询结果为空[]

2.若修改为 charset='utf8',查询有结果,但有中文的地方显示成 乱码。
然后各种查询了网上的方法,把exe_sql.decode(xxx),encode(YY)
直接报错,没用--

3个回答

conn = pymssql.connect(host="192.168.122.141",
port=1433,
user="myshop",
password="oyf20140208HH",
database="mySHOPCMStock",
charset='utf8',#不用声明字符集也可以
as_dict=True)

cur = conn.cursor()
sql = "select top 10 [ID],[Name] from [User]"
cur.execute(sql)
list = cur.fetchall()
for row in list:
print(row["ID"],row["Name"].encode('latin-1').decode('gbk'))

yong_sun
yong_sun 这个百度里有,试了没用--
大约一年之前 回复

就是where 查询条件为中文,编码的问题。但转来转去还是不行--。

这样就可以,把语句写在 execute() 里,
cur.execute('select sAccount,sChrName,nLevel from Mir_Hum_Info where sChrName =%s','杰克'.encode('GBK'))

下边这样就不行,报错 AttributeError: 'tuple' object has no attribute 'encode'
sql='select sAccount,sChrName,nLevel from Mir_Hum_Info where sChrName =%s','杰克'.encode('GBK')
cur.execute(sql)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!