python:數據庫鏈接操做入門

模塊說明python

pymssql和pyodbc模塊都是經常使用的用於SQL Server、MySQL等數據庫的鏈接及操做的模塊,固然一些其餘的模塊也能夠進行相應的操做,相似adodbapi、mssql、mxODBC等,咱們在實際用的時候選擇其中一個模塊就好,對於每個模塊都有相應的支持版本和支持平臺,你們能夠自行查閱文檔https://wiki.python.org/moin/SQL%20Serversql

模塊安裝 數據庫

pip install pymssqlapi

模塊使用fetch

  咱們利用python來進行數據庫的操做,那麼第一步就應該是鏈接數據庫,這裏咱們用pymssql模塊中的connect方法連鏈接,在pyodbc模塊中一樣也是利用connect方法。server

使用connect建立鏈接對象對象

connect.cursor建立遊標對象,SQL語句的執行基本都在遊標上進行blog

cursor.executeXXX方法執行SQL語句,cursor.fetchXXX獲取查詢結果等ip

調用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提交變動