剛開始學習python ,之前學習一直是用mysql數據庫,一直連接成功,今天項目需要連接mssql數據一直測試不成功,搞了一天python3.6連接mssql2016 成功,記錄一下:
在cmd下pip install pymssql 提示缺少Visual C++14 ,網上下載下來安裝,提示卸載vs ,這個玩的比較大,其實原因不在這里,網上查看文章先下載pymssql-2.1.3-cp36-cp36m-win_amd64.whl 再初始化:pip install E:\pymssql-2.1.3-cp36-cp36m-win_amd64.whl
在pycharm 里面也可以看到了 File->Settings->Project:項目名稱->Project Interpreter
初始化包成功后就可以寫代碼了,如下:
#!/usr/bin/env python # -*- coding: UTF-8 -*- import pymssql class MSSQL(object): ''' 對pymssql的簡單封裝 pymssql庫,該庫到這里下載:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 使用該庫時,需要在Sql Server Configuration Manager里面將TCP/IP協議開啟 用法: ''' def __init__(self,host,user,pwd,db): self.host=host self.user=user self.pwd=pwd self.db=db def GetConnect(self): ''' 得到鏈接信息 :return: ''' if not self.db: raise (NameError,"沒有設置數據庫信息") self.connect=pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8") cur=self.connect.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 :param sql: sql語句 :return: ''' cur=self.GetConnect() cur.execute(sql) resList = cur.fetchall() #查詢完畢后必須關閉連接 self.connect.close() return resList def ExecNonQuery(self, sql): """ 執行非查詢語句 調用示例: cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close() """ cur = self.__GetConnect() cur.execute(sql) self.connect.commit() self.connect.close() def test(): ## ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics") ## #返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的字段 ## ms.ExecNonQuery("insert into WeiBoUser values('2','3')") ms = MSSQL(host="172.16.2.248", user="sa", pwd="qazwsx", db="cytest") resList = ms.ExecQuery("SELECT * FROM t_user") print(resList) if __name__ == '__main__': test()
python 連接各類主流數據庫簡單示例:http://blog.csdn.net/a87b01c14/article/details/51546727