Oracle 資料庫
先決條件:
- cx_Oracle 包 - 有關所有版本,請參見此處
- Oracle 即時客戶端 - 適用於 Windows x64 , Linux x64
建立:
-
將 cx_Oracle 包安裝為:
sudo rpm -i <YOUR_PACKAGE_FILENAME>
-
解壓縮 Oracle 即時客戶端並將環境變數設定為:
ORACLE_HOME=<PATH_TO_INSTANTCLIENT>
PATH=$ORACLE_HOME:$PATH
LD_LIBRARY_PATH=<PATH_TO_INSTANTCLIENT>:$LD_LIBRARY_PATH
建立連線:
import cx_Oracle
class OraExec(object):
_db_connection = None
_db_cur = None
def __init__(self):
self._db_connection =
cx_Oracle.connect('<USERNAME>/<PASSWORD>@<HOSTNAME>:<PORT>/<SERVICE_NAME>')
self._db_cur = self._db_connection.cursor()
獲取資料庫版本:
ver = con.version.split(".")
print ver
樣本輸出:[‘12’,‘1’,‘0’,‘2’,‘0’]
執行查詢:SELECT
_db_cur.execute("select * from employees order by emp_id")
for result in _db_cur:
print result
輸出將在 Python 元組中:
(10,‘SYSADMIN’,‘IT-INFRA’,7)
(23,‘人力資源協會’,‘人力資源’,6)
執行查詢:INSERT
_db_cur.execute("insert into employees(emp_id, title, dept, grade)
values (31, 'MTS', 'ENGINEERING', 7)
_db_connection.commit()
在 Oracle 資料庫中執行插入/更新/刪除操作時,更改僅在你的會話中可用,直到發出 commit
。當更新的資料提交到資料庫時,它可供其他使用者和會話使用。
執行查詢:使用繫結變數 INSERT
繫結變數使你能夠使用新值重新執行語句,而無需重新解析語句。繫結變數可以提高程式碼的可重用性,並可以降低 SQL 注入攻擊的風險。
rows = [ (1, "First" ),
(2, "Second" ),
(3, "Third" ) ]
_db_cur.bindarraysize = 3
_db_cur.setinputsizes(int, 10)
_db_cur.executemany("insert into mytab(id, data) values (:1, :2)", rows)
_db_connection.commit()
關閉連線:
_db_connection.close()
close()
方法關閉連線。指令碼結束時,將自動釋放未明確關閉的任何連線。