#! /usr/bin/env python

#最近折腾MS SQLSERVER ,被中文乱码搞的头大,最后从这个博客中看到解决方法:在建立连接时加入:......,charset='utf-8'

#

#coding=utf8

"""

Author: Wenlicheng

Date:

Description:Python连接sqlserver数据库,解决中文乱码问题

"""

import pymssql

import sys

import os

reload(sys)

sys.setdefaultencoding('utf-8')

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

class MSSQL:

"""

对pymssql的简单封装

使用该库时,需要在Sql Server configuration Mnanage里面讲TCP/IP协议开启

"""

def __init__(self,host,port,user,pwd,db):

self.host = host

self.user = user

self.port = port

self.pwd = pwd

self.db = db

def __GetConnect(self):

"""

得到连接信息

conn.cursor()

:return:

"""

if not self.db:

raise (NameError, "没有设置数据库信息")

self.conn = pymssql.connect(host=self.host, port=self.port, user=self.user, password=self.pwd,

database=self.db, charset='utf8')

cur = self.conn.cursor()

if not cur:

raise(NameError, "连接数据库失败")

else:

return cur

def ExecQuery(self, sql):

"""

执行查询语句

返回的是一个包含Tuple的list,list的元素是记录行,tuple的元素是每行记录的字段

:param sql:

:return:

"""

cur = self.__GetConnect()

cur.execute(sql)

resList = cur.fetchall()

#查询完毕后必须关闭连接

self.conn.close()

return resList

def ExecNonQuery(self,sql):

"""

执行非查询语句

:param sql:

:return:

"""

cur = self.__GetConnect()

cur.execute(sql)

self.conn.commit()

self.conn.close()

def main():

ms = MSSQL(host='192.1.1.1', port=1234, user='sa', pwd='123456', db='LearnDB')

resList = ms.ExecQuery("""select LastName,Address from person""")

for (LastName,Address) in resList:

print str(Address)

if __name__ == "__main__":

main()

转自:Python连接Sqlserver数据库(解决中文乱码版) - LeechengLove的博客 - CSDN博客

https://blog.csdn.net/LeechengLove/article/details/81036295

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐