当前位置: 首页 > 编程笔记 >

Python连接mssql数据库编码问题解决方法

东门奕
2023-03-14
本文向大家介绍Python连接mssql数据库编码问题解决方法,包括了Python连接mssql数据库编码问题解决方法的使用技巧和注意事项,需要的朋友参考一下

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。

(1)、首先,要保证文件的开头要加上编码设置来说明文件的编码


#encoding=utf-8


(2)、然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号

conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')


(3)、设置python系统的默认编码(对于文件来说,这招几乎屡试不爽,呵呵~~)

import sys

reload(sys)

sys.setdefaultencoding('utf8')


注意:上述编码是“utf8”,而不是“utf-8”,我也没弄明白,大部分情况下,这个无所谓的,但是这里我试了必须要是“utf8”

一个简单的完整的python连接mssqlserver的例子如下(得安装pymssql包):


#encoding:utf8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import pymssql

try:

    conn=pymssql.connect(server='.',user='', password='',database='MyTest',charset='utf8')

    sql="select * from UserInfo"

    cur=conn.cursor()     cur.execute(sql)     data=cur.fetchall()     conn.close()     print data except Exception,e:     print e

运行结果如下:


[(u'20093501', u'\xb9\xf9\xbe\xb8', u'\u7537 ', 35, u'\xb4\xf3\xcf\xc0'),

 (u'20093502', u'\xbb\xc6\xc8\xd8', u'\u5973 ', 34, u'\xc3\xc0\xc5\xae'), 

 (u'20093503', u'\xc1\xee\xba\xfc\xb3\xe5', u'\u7537 ', 25, u'2B\xc7\xe0\xc4\xea'), 

 (u'20093504', u'\xc8\xce\xd3\xaf\xd3\xaf', u'\u5973 ', 24, u'\xc6\xaf\xc1\xc1')]

 [Finished in 0.2s]

 

  虽然摆脱了问号和乱码的困扰,但这仍不是我们想要的结果,但这个确实是正确的,因为结果是utf8编码。这个现象确实诡异,请教了许多高手,得知,最好的结果就是逐个字段查询,才能显示中文,整个查询的话,会以utf8的格式显示出来。

  上述代码中第14行data是整个查询的结果,如果指定某个具体的字段,如print data[0][2](表示取查询结果的第一行第三列的字段的值),则会输出中文。

其实不仅仅是mssqlserver数据库,mysql(需下载MySQLdb包)、sqllite(python自带的文件数据库)、mongodb(需下载PyMongo包)等或者是普通文本文件也是类似的解决方案。

 类似资料:
  • 本文向大家介绍php5.3不能连接mssql数据库的解决方法,包括了php5.3不能连接mssql数据库的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php5.3不能连接mssql数据库的解决方法。分享给大家供大家参考。具体分析如下: 自从php5.3之后系统就不支持mssql_connect这个函数连接了,以前我也讲可以使用com接口来实现,现在我再介绍解决php5.3不能连

  • 本文向大家介绍Django数据库连接丢失问题的解决方法,包括了Django数据库连接丢失问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 问题 在Django中使用mysql偶尔会出现数据库连接丢失的情况,错误通常有如下两种 OperationalError: (2006, 'MySQL server has gone away') OperationalError: (2013, 'Los

  • 本文向大家介绍SqlServer数据库中文乱码问题解决方法,包括了SqlServer数据库中文乱码问题解决方法的使用技巧和注意事项,需要的朋友参考一下 问题:创建新数据库,存入中文显示乱码??? 原因分析:SQL版的乱码问题还是出现在SQL SERVER的安装设置上。默认安装时系统默认的排序规则是拉丁文的排序规则,但一般人在安装时没有考虑到这一点,安装时只是点取下一步,安装完成后,造成了SQL版在

  • 本文向大家介绍node连接mysql数据库遇到的问题和解决方案,包括了node连接mysql数据库遇到的问题和解决方案的使用技巧和注意事项,需要的朋友参考一下 今天安装了新版的MySQL(8.0.21),用node框架连接数据库的时候报了个错: Client does not support authentication protocol requested by server; consider

  • 问题内容: 这是我简单的测试脚本。只是试图做一个基本的选择语句。在教程中找到了基本知识。 经过一个小时的搜索并尝试了一些解决方案,我比开始时就更接近解决问题了。希望我在某个地方犯了一个简单的错误,但我找不到它… 这是我遇到的错误 任何帮助将非常感激! 问题答案: 如果未在URL中指定,则该方言的默认驱动程序将为“ SQL Server” [1]。这意味着您需要在/etc/unixODBC/odbc

  • 本文向大家介绍解决python3 Pycharm上连接数据库时报错的问题,包括了解决python3 Pycharm上连接数据库时报错的问题的使用技巧和注意事项,需要的朋友参考一下 最近在学习python。 今天在学习python连接Mysql数据库时报错: 使用pyCharm+python3+pyMysql+mysql5.56 数据库连接: 最后查看发现,在数据库连接时不需要编码: 最后测试通过!