2022-06-12

【Python】連線 MS SQL Server

參考資料 ----

微軟官方建議的驅動程式有 2 個 -- pyodbcpymssql,在本例採用的是 pymssql
 
#!/usr/bin/python
#-*- coding:utf-8 -*-

import  pymssql

...
...

def  main():
    conn = pymssql.connect(server='主機IP', user='帳戶名', password='密碼', database='資料庫名')
    cursor = conn.cursor(as_dict=True)    # 啟用以欄位名讀出欄位值
    
    # 查詢
    ssql = ("SELECT * FROM 資料表名 \n"
            "    WHERE 1=1 \n"
            "        AND 篩選條件1 \n"
            "        AND 篩選條件2 \n"
            "        AND ...")
    # SQL 語句以 括弧 包起,就可以寫多列
    # 每列最末是讓語句折行
    # 除錯時較易閱讀
    
    cursor.execute(ssql)
    
    # 方法一:
    # 一次只取出一筆記錄
    row = cursor.fetchone()
    while row:
        ff1 = row['欄位名']
        ...
        ...
        row = cursor.fetchone()
        
        
    # 方法二:
    # 一次取出所有記錄,並存入 list 中
    rows = cursor.fetchall()
    print("記錄數:"+str(cursor.rowcount))    # 一定要先 fetchall() 才能知道記錄數, 否則傳回值是 -1
    print("record count = "+str(len(rows)))    # 此法是讀出 list 有多少 element
    for rr in rows:
        ff1 = rr['欄位名']
        ...
        ...
        
        
    # 更新
    ssql = ("UPDATE 資料表名 \n"
            "    SET 欄位1='值1' \n"
            "      欄位2='值2' \n"
            "    WHERE 篩選條件")
    cursor.execute(ssql)
    conn.commit()    # 預設是沒有 auto commit 的
 


沒有留言:

張貼留言