python pymssql

Python透過Pymssql操作SQL Server

Why Pymssql

在Python的世界裡若要操作MS SQL Server資料庫,有兩大選擇方案:Pyodbc與Pymssql,為什麼首推Pymssql呢?因為若使用Pyodbc,顧名思義就是要安裝設定Pyodbc,除了不方便外,ODBC在Mac環境的設定非常複雜,而且Pyodbc的效能也不是特別的好,所以選用Pymssql最為簡單方便。

Pymssql官方網站:https://www.pymssql.org/

安裝Pymssql及相依性套件

開發環境

  • OS:macOS Monterey 12.6
  • IDS:Visual Studio Code
  • Python 3.10

步驟1:使用brew安裝FreeTDS模組

$ brew install FreeTDS

步驟2:透過pip安裝pymssql套件

$ pip install pymssql==2.1.5

註:因為Mac環境有相容性問題,所以在Mac上,不論Intel或ARM,都要指定2.1.5版本。

以上兩個步驟就完成Pymssql的安裝工作了,可以開始寫程式囉!

連線到MS SQL Server

# 引入Pymssql包
import pymssql

# 宣告一個含有MS SQL Server連線參數的連線
sqlconn = pymssql.connect(server='Server Name', user='User ID', password='Change Me', database='Database Name')

# 開啟一個連線
cursor = sqlconn.cursor()

# ... Select / Insert / Update / Delete

# 關閉連線
sqlconn.close()

Select

# 引入Pymssql包
import pymssql

# 宣告一個含有MS SQL Server連線參數的連線
sqlconn = pymssql.connect(server='Server Name', user='User ID', password='Change Me', database='Database Name')

# 開啟一個連線
cursor = sqlconn.cursor()

# 宣告一個Quert String
querystr = "SELECT ROW0, ROW1, ROW2 FROM Tabel WHERE ROW3=%s"

# 執行Query String,並帶入參數
cursor.execute(querystr, "Parameter")

# 取得一行資料
row = cursor.fetchone() 
while row:  
        print(str(row[0]) + " " + str(row[1]) + " " + str(row[2]))     
        row = cursor.fetchone()

# 關閉連線
sqlconn.close()

Insert / Update / Delete

# 引入Pymssql包
import pymssql

# 宣告一個含有MS SQL Server連線參數的連線
sqlconn = pymssql.connect(server='Server Name', user='User ID', password='Change Me', database='Database Name')

# 開啟一個連線
cursor = sqlconn.cursor()

# 宣告一個Quert String
querystr = "INSERT INTO Table (ROW0, ROW1, ROW2) VALUES(%s, %s, %s)"
# querystr = "UPDATE Table SET  ROW0=%s, ROW1=%s, ROW2=%3"
# querystr = "DELETE FROM Table WHERE ROW0=%s"

# 執行Insert語法並帶入參數
cursor.execute(querystr, ("Parameter1", "Parameter2", "Parameter3"))

# 將資料Commit,才會真正寫到資料庫
sqlconn.commit()

# 關閉連線
sqlconn.close()

Rollback

# 引入Pymssql包
import pymssql

# 宣告一個含有MS SQL Server連線參數的連線
sqlconn = pymssql.connect(server='Server Name', user='User ID', password='Change Me', database='Database Name')

# 開啟一個連線
cursor = sqlconn.cursor()

# 宣告一個Quert String,內容是Begin Transaction
querystr1 = "BEGIN TRANSACTION"

# 宣告一個Quert String
querystr2 = "INSERT INTO Table (ROW0, ROW1, ROW2) VALUES(%s, %s, %s)"

# 執行Insert語法並帶入參數
cursor.execute(querystr2, ("Parameter1", "Parameter2", "Parameter3"))

# 執行Rollback
cursor.rollback()

# 關閉連線
sqlconn.close()

~ END ~

,

Related posts

Latest posts