利用pyodbc使用python操作資料庫,本文介紹pyodbc連結MSSQL/postgreSQL之方法。
PYODBC
新版python只需install pyodbc並在程式碼中import即可。pip install pyodbc
1 |
import pyodbc |
而舊版python (EX:3.4)則需install pypyodbc並import。pip install pypyodbc
1 |
import pypyodbc as pyodbc |
連結資料庫
pyodbc連結資料庫時,無論是MSSQL或是PostgreSQL,都須先檢查DB Driver。
MSSQL
以MSSQL Server 2008為例,安裝好DB後透過以下pyodbc內置指令即可印出目前支援的drivers:
1 2 3 |
import pypyodbc as pyodbc for i in pyodbc.drivers: print(i) |
Results:
SQL Server
…(其他Drivers)
接著找到支援的MSSQL ODBC driver後,就能由以下程式操作DB:
1 2 3 4 5 6 7 8 |
import pypyodbc as pyodbc cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER={127.0.0.1}; DATABASE={TEST_DB}; UIS={USER}; PWD={password};') cursor = cnxn.cursor() cursor.execute("INSERT into MY_TABLE(COL01, COL02, COL03) VALUES(1, 2, 3)") cnxn.commit() |
PostgreSQL
需先至下方連結下載並安裝PostgreSQL之ODBC,
Windows請到網頁的msi資料夾下載安裝檔。
https://www.postgresql.org/ftp/odbc/versions/
安裝後使用上面pyodbc尋找driver,
Results:
SQL Server
PostgreSQL ANSI
PostgreSQL Unicode
PostgreSQL Unicode
…(其他Drivers)
並修改程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pypyodbc as pyodbc MY_TABLE = '"MY_TABLE"' COL01 = '"COL01"' COL02 = '"COL02"' COL03 = '"COL03"' cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER={127.0.0.1}; DATABASE={TEST_DB}; UIS={USER}; PWD={password};') cursor = cnxn.cursor() cursor.execute("INSERT into" + MY_TABLE + "(" + COL01 + "," + COL02 + "," + COL03 + ") VALUES(1, 2, 3)") cnxn.commit() |
上方為什麼要加入
1 2 3 4 5 6 |
MY_TABLE = '"MY_TABLE"' COL01 = '"COL01"' COL02 = '"COL02"' COL03 = '"COL03"' |
這四行程式呢?
因為PostgreSQL在擷取ODBC指令時,在"Unquoted Names" 是不區分大小寫(Case-insensitive)的,所以SELECT * FROM hello
會和 SELECT * FROM HELLO
結果會是相同(都視為hello)。
所以我們必須將指令中的Name改為"Quoted",所以SELECT * FROM "hello"
會和 SELECT * FROM "HELLO"
結果就會不同。
基於以上因素,若你的資料庫名稱,或是資料表名稱是大寫,或是有區分大小寫,那就必須特別注意資料庫操作段程式碼的撰寫邏輯。
留言