模塊說明
pymssql和pyodbc模塊都是常用的用於SQL Server、MySQL等數據庫的連接及操作的模塊,當然一些其他的模塊也可以進行相應的操作,類似adodbapi、mssql、mxODBC等,我們在實際用的時候選擇其中一個模塊就好,對於每一個模塊都有相應的支持版本和支持平臺,大家可以自行查閱文檔https://wiki.python.org/moin/SQL%20Server
模塊安裝
pip install pymssql
模塊使用
我們利用python來進行數據庫的操作,那麼第一步就應該是連接數據庫,這裏我們用pymssql模塊中的connect方法連連接,在pyodbc模塊中同樣也是利用connect方法。
使用connect創建連接對象
connect.cursor創建遊標對象,SQL語句的執行基本都在遊標上進行
cursor.executeXXX方法執行SQL語句,cursor.fetchXXX獲取查詢結果等
調用close方法關閉遊標cursor和數據庫連接
pymssql模塊連接
pyodbc模塊連接
import pyodbc
conn = pyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=test;DATABASE=test;UID=user;PWD=password')
不同的SQL server版本對應的DRIVER字段不同。對應關係如下:
{SQL Server} - released with SQL Server 2000
{SQL Native Client} - released with SQL Server 2005 (also known as version 9.0)
{SQL Server Native Client 10.0} - released with SQL Server 2008
{SQL Server Native Client 11.0} - released with SQL Server 2012
使用pyodbc需要安裝微軟官方的Native Client(沒有安裝會報錯IM002),安裝SQL server management studio會自動附帶安裝(控制面板裏可以看到安裝的版本)。如果沒有安裝過需要在https://msdn.microsoft.com/en-us/data/ff658533.aspx下載安裝(sqlncli.msi)。建議選擇與遠程數據庫版本相對應的Native Client。如果本地安裝的Native Client是高版本,則DRIVER={SQL Server Native Client 11.0}需要填寫的是本地的高版本。
獲取數據庫內容
這裏涉及到遊標的使用
fetchone() :返回單個的元組,也就是一條記錄(row),如果沒有結果 則返回 None
fetchall() :返回多個元組,即返回多個記錄(rows),如果沒有結果 則返回 ()
由於execute返回的是cursor本身,所以如果你需要一次直接獲取所有內容可以直接使用cursor本身來獲取
關於遊標這裏還存在一個要向大家專門說明的地方,
就是一個連接一次只能有一個遊標的查詢處於活躍狀態,具體什麼意思大家可以看下面的代碼。
提供一個解決的辦法
在遊標的正常使用中游標獲取的查詢結果,一行爲一個元組。
我們在實際使用中可以根據需求,用 as_dict 方法返回一個字典變量,其中字典的Key爲數據表的列名
大家如果覺得上面的代碼寫起來看上去太長,給大家提供一個代碼量小的數據庫操作解決辦法
就是 with語句,即上下文管理器,它的好處一個是代碼的集成度高,一個是省去顯示的調用close方法關閉連接和遊標
關於數據庫的增刪改
增刪改數據庫的內容也是直接傳遞SQL語句給execute方法。但要注意運行之後需要用commit提交變更