python:數據庫連接操作入門

模塊說明

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提交變更