ga('set', 'anonymizeIp', 1);
利用pyodbc使用python操作資料庫,本文介紹pyodbc連結MSSQL/postgreSQL之方法。
新版python只需install pyodbc並在程式碼中import即可。pip install pyodbc
import pyodbc
而舊版python (EX:3.4)則需install pypyodbc並import。pip install pypyodbc
import pypyodbc as pyodbc
pyodbc連結資料庫時,無論是MSSQL或是PostgreSQL,都須先檢查DB Driver。
以MSSQL Server 2008為例,安裝好DB後透過以下pyodbc內置指令即可印出目前支援的drivers:
import pypyodbc as pyodbc
for i in pyodbc.drivers:
print(i)
Results:
SQL Server
…(其他Drivers)
接著找到支援的MSSQL ODBC driver後,就能由以下程式操作DB:
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之ODBC,
Windows請到網頁的msi資料夾下載安裝檔。
https://www.postgresql.org/ftp/odbc/versions/
安裝後使用上面pyodbc尋找driver,
Results:
SQL Server
PostgreSQL ANSI
PostgreSQL Unicode
PostgreSQL Unicode
…(其他Drivers)
並修改程式碼:
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()
上方為什麼要加入
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"
結果就會不同。
基於以上因素,若你的資料庫名稱,或是資料表名稱是大寫,或是有區分大小寫,那就必須特別注意資料庫操作段程式碼的撰寫邏輯。