DB2 是美國IBM公司開發的一套關聯式資料庫管理系統,它主要的運作環境為UNIX(包括IBM自家的AIX)、Linux、IBM i(舊稱OS/400)、z/OS,以及Windows伺服器版本。今天我們來探討下如何使用Python連接DB2資料庫
在工作中遇到了這樣的情況,專案中需要連接IBM的關係型資料庫(DB2),關於這方面的函式庫比較稀少,其中ibm_db 是比較好用的一個庫,網路上也有教程,但是好像不準確,也不太詳細,錯誤百出,沒辦法只能拿到後自己分析源碼,總算搞定。
安裝
環境需求:
首先是資料庫DB2,下載連接直接百度,我下載是這兩個檔案:
只下載箭頭所指即可,我還沒在linux上做測試。
資料庫API(這個東西找了好久,終於找到了合適的)(找不到搜尋:SQLAPI.zip)
Python2.7
VCForPython2.7
ibm_db(主要的庫,在安裝中會下載ntx64_odbc_cli庫,安裝時會檢測IBM_DB_HOME 變量,所以需要安裝資料庫後再安裝ibm_db)
以上模組在網路上都可以找到,請自行下載安裝。
建庫
資料庫安裝好之後新建一個實例,預設是DB2,然後建立一個新的資料庫,我建立的MYTEST(在操作資料庫以及連結資料庫需注意大小寫),命令列方法:
開啟命令列處理器:(管理員身分)
#
輸入? 直接回車,會顯示指令列表,開啟資料庫管理器:
然後關閉就好,建立資料庫以及建立表還是使用db2 data studio,比較方便,安裝時在根目錄建立一個臨時目錄,把檔案解壓縮進去,之後再修改install.exe的屬性,改成相容Windows 7運行,同時使用管理員權限打開,之後就是安裝安裝好之後點擊左側新建一個資料庫。
以以上方式填寫,使用者名稱和密碼使用安裝資料庫時設定的使用者名稱密碼。
實例配置好且能測試成功就可以建立資料庫了。
資料庫名稱和別名寫上即可,其餘的由於是測試就不填了,等正式環境在考察下性能優化方面的配置。點擊運行創建,過程有點慢,不知道是不是機器配置原因,大概花了十幾分鐘。
下面就不詳細說建表的過程了,值需注意,建表前先簡歷模式(Schema),使用自訂模式建表。
連接
連接直接匯入庫
#
匯入ibm_db_dbi即可。
import ibm_db_dbi conn = ibm_db_dbi.connect(“PORT=50000;PROTOCOL=TCPIP;”, host=db[“host”], database=db[“database”], user=db[“user”], password=db[“passwd”]) conn.set_autocommit(True) cursor = conn.cursor()
連接資料庫,設定自動提交
#
sql = “select * from testable” result = cursor.execute(sql)
注意,以上查詢方式是錯的。正確如下:
sql = “select * from MYSCHEMA.TESTTABLE” result = cursor.execute(sql) rows = cursor.fetchall()
這裡的動作和MySQL沒什麼差別了
這個地方被坑了好幾個小時,T_T
插入
sql = “insert into MYSCHEMA.TESTTABLE (“uuid”, “content”) values (‘%s', %s)” % (“1234567890”, “asdfghjkl”) result = cursor.execute(sql)
更新
###########################################################sql = “update \”MYSCHEMA\”.\”TESTTABLE \” set \”content\” = ‘%s' where \”uuid\” = ‘%s'” % ( “aaa”, “1234567890”) result = cursor.execute(sql)