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()
方法关闭连接。脚本结束时,将自动释放未明确关闭的任何连接。