什么是Python 解釋器及其使用?
要訪問數據庫,Python 解釋器需要安裝數據庫模塊。您有許多選擇,這些選擇均遵守標準化的 API 規范,并且曾經以編程方式使用過 ODBC 或 JDBC 的任何人均非常熟悉它們。
您將使用 cx_Oracle,因為它比較易于安裝。只需下載一個與您的 Python 和 Oracle 數據庫版本匹配的 Windows 安裝程序。 安裝 cx_Oracle 后,返回 Python 命令行解釋器進行試用。由于 cx_Oracle 是一個獨立于核心Python 解釋器語言的模塊,因此在將其用于任何會話或腳本之前必須導入它。
- >>> orcl = cx_Oracle.connect('scott/tiger@orcl')>>>
- curs = orcl.cursor()>>> sql = """CREATE TABLE INIT_PARAMS ...
- ( fileName VARCHAR2(30),... param VARCHAR2(64),...
- value VARCHAR2(512) )"""
請記住要使用大寫字母!下面,我們將創建一個用于存儲結果的表。
- import readInitOra, cx_OracleinitParams = {}
- for fileName in ['init_orcl.ora', 'init_default.ora']:
- initParams[fileName] = readInitOra.read(fileName)orcl = cx_Oracle.
- connect('scott/tiger@orcl')curs = orcl.cursor()for fileName in initParams.keys():
- for param in initParams[fileName].keys():value = initParams[fileName][param]sql = """INSERT INTO INIT_PARAMS VALUES
- (:fileName, :param, :value)"""bindVars = {'fileName':fileName,
- 'param':param, 'value':value}curs.execute(sql, bindVars)curs.close()
- orcl.commit()
以上就是全部代碼了。注意,您這次在 SQL 字符串中使用了綁定變量,并在一個單獨字典中為它們提供了值。使用綁定變量可以幫助您擺脫 SPCSP(防止錯誤使用共享池協會)的麻煩。 從查詢中獲取結果略微復雜一些。對游標對象調用 execute() 后。
可以使用 fetchone() 一次獲取一行,也可以使用 fetchall() 獲取所有行的列表。無論在哪種情況下,每一行均采用字節組(即可以由數值索引訪問的有序值序列)的形式。例如,我們將編寫 compareInitOra.py 來打印與 V$PARAMETER 中的當前值沖突的 init_orcl.ora 參數:
該腳本引入了一些您還沒見過Python 解釋器技巧:
◆對字典 fileParams 調用 items() 將返回一個(鍵, 值)對列表。可以通過在 for 語句中指定兩個循環變量來遍歷這些鍵值。
◆調用 liveParams.get(param) 的工作方式類似于 liveParams[param],區別在于如果在 liveParams 中未找到參數,則將返回一個錯誤 - 非常類似于“ORA-01403:no data found in PL/SQL”消息。而 liveParams.get(param) 將在 liveParams 中不存在參數的情況下返回 None。
◆Python 解釋器 可以使用 % 運算符執行字符串替換。與 C 的 printf 相似,%s 表示將在該點插入一個字符串形式的值。這些值按順序從 % 之后的字節組中提取。
◆最后一行代碼比您在沒有換行符的情況下進行鍵入運行時間更長,因此您使用了一個反斜線,從而打破了Python 解釋器將換行符解釋為命令結尾這一通常的規則。