python默認的數據庫是 SQLlite,不過它對MySql以及SQL server的支持也可以。這篇博客,介紹下如何在Windows下安裝pymssql庫並進行連接使用。。。
環境:Windows_64位
版本:python3.6
一、簡單介紹
pymssql是一個python的數據庫接口,基於FreeTDS構建,對_mssql模塊進行了封裝,遵循python的DBAPI規范,而FreeTDS是一個C語言連接sqlserver的公共開源庫。
它們的關系如下:
具體的內容,可查閱官方文檔進行了解:http://pymssql.org/en/stable/index.html
二、下載安裝
有兩種安裝方式,下面分別介紹:
1、vs+pymssql
通過官方文檔可知,要安裝pymssql首先需要安裝vs,根據上圖,選擇自己的python版本對應的vs版本,以及操作系統版本進行安裝包下載:
FreeTDS下載地址:https://github.com/ramiro/freetds/releases/
pymssql下載地址:https://pypi.org/project/pymssql/
下載對應的版本,進行安裝,pymssql可以使用pip命令安裝,也可以安裝包安裝,根據個人喜好即可。
安裝后,可以通過CMD進入命令行,然后輸入 pip show mymssql ,查看是否安裝成功,示例如下:
PS:這種方法安裝,可能會出現一些迷之報錯,很蛋疼,如果這種方法安裝搞不定的話,可以看下面第二種安裝方法。。。
2、安裝.whl包
如果認真看過官方文檔介紹的童鞋,應該注意到了這里的內容,Windows下可以通過安裝.whl包來進行安裝pymssql,文檔介紹如下:
首先通過在python的shell中輸入命令 import pip; print(pip.pep425tags.get_supported()) 查看pip支持的文件名和版本,示例如下:
然后可以在python的非官方Windows擴展包站點獲取對應的.whl文件,鏈接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
進入該站點以后,Ctrl+F搜索pymssql,然后點擊,示例如下:
到達這里,選擇你需要的.whl包下載:
然后進入你的python安裝包目錄Scripts,利用pip命令,安裝即可:
三、連接使用
1、pymssql工作原理
①、使用connect創建連接對象;
②、connect.cursor創建游標對象,SQL語句的執行在游標上執行;
③、cursor.execute()方法執行SQL語句,cursor.fetch()方法獲取查詢結果;
④、調用close方法關閉游標cursor和數據庫連接;
2、示例代碼
1 # coding=utf-8
2 import pymssql 3
4 class SQLServer: 5 def __init__(self,server,user,password,database): 6 # 類的構造函數,初始化DBC連接信息
7 self.server = server 8 self.user = user 9 self.password = password 10 self.database = database 11
12 def __GetConnect(self): 13 # 得到數據庫連接信息,返回conn.cursor()
14 if not self.database: 15 raise(NameError,"沒有設置數據庫信息") 16 self.conn = pymssql.connect(server=self.server,user=self.user,password=self.password,database=self.database) 17 cur = self.conn.cursor() 18 if not cur: 19 raise(NameError,"連接數據庫失敗") # 將DBC信息賦值給cur
20 else: 21 return cur 22
23 def ExecQuery(self,sql): 24 '''
25 執行查詢語句 26 返回一個包含tuple的list,list是元素的記錄行,tuple記錄每行的字段數值 27 '''
28 cur = self.__GetConnect() 29 cur.execute(sql) # 執行查詢語句
30 result = cur.fetchall() # fetchall()獲取查詢結果
31 # 查詢完畢關閉數據庫連接
32 self.conn.close() 33 return result 34
35 def main(): 36 msg = SQLServer(server="127.0.0.1",user="test",password="Test321",database="TEST") 37 result = msg.ExecQuery("SELECT TOP 1 Value FROM t_Security_Code WHERE Mobile = '18501007700' ORDER BY InsertTime DESC") 38 for (Value) in result: 39 print(Value) 40
41 if __name__ == '__main__': 42 main()
PS:初始化數據庫連接信息,數據庫地址:server,密碼:password,數據庫:database!!!
剛開始我個人也是自定義的,后來老報錯,查詢了配置信息后才搞定,具體的connect信息如下:
還有兩點:
①、一條游標只能執行一條SQL語句,如果需要執行多條,需要創建多條游標,切記!!!
②、SQL語句中有python默認值(比如index)時,給其加上反引號即可。。。
關於pymssql模塊的下載安裝以及基礎使用,內容如上,僅供參考。。。