#coding=utf8
import pymssql
class MSSQL:
def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db
def __getConnect(self):
"""
得到连接信息
返回: conn.cursor()
"""
if not self.db:
raise(nameError,"没有设置数据库信息")
self.conn = pymssql.connect(host=self.host,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的元素是每行记录的字段
调用示例:
ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
resList = ms.execQuery("select id,NickName from WeiBoUser")
for (id,NickName) in resList:
print str(id),NickName
"""
cur = self.__getConnect()
cur.execute(sql)
resList = cur.fetchall()
#查询完毕后必须关闭连接
self.conn.close()
return resList
def exeNonQuery(self,sql):
"""
执行非查询语句
调用示例:
cur = self.__getConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
"""
cur = self.__getConnect()
cur.execut(sql)
self.conn.commit()
self.conn.close()
def main():
## ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
## #返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
## ms.exeNonQuery("insert into WeiBoUser values('2','3')")
ms = MSSQL(host="192.168.0.178",user="sa",pwd="xibao.2015",db="fortest")
resList = ms.execQuery("select top 10 ID,Name from CP_Dealer")
for (ID,Name) in resList:
print (str(Name).decode("utf8"))
if __name__ == '__main__':
main()
## print (str(Name).decode("utf8"))此处执行错误报错,报错内容如下]\
下面这个报错就是直接打印str(Name)的错误。求指导啊
~~
手头没有python3.0的开发环境, 先语言说一下:
python3.0和python2.*是完全两种语言
python3.0目前在各大公司很少被使用, 原因就是3.0版本基本处于实验阶段,重写了很多东西, 非常多的三方库包括你使用的sql连接库对3.0的支持不好或者不支持;
你的代码有很重的pytho2的痕迹,或者说你可能拿来了一些别人的代码;
我简单说一下我的一些排查方向
python3.0和2.0的重要区别就是在python3.0对
字符
串(str)和字节
串(bytes)进行了区分在3.0中
认为str类型的值就是unicode内码, 所以对str类型只能encode
成为字节串(bytes); 认为bytes字节串就是编码之后的二进制串, 只能decode成为unicode内码
;建议你判断一下你的函数返回值类型
最后的建议: 想要好好开发, 还是先用python2.7版本.