cxOracle语法掌握,你也可以玩转数据库(cx_oracle语法)

作为Python语言中的一个重要的扩展库,cx_Oracle是Python语言连接Oracle数据库的标准库之一。它基于Oracle客户端库,能够通过Python代码实现对Oracle数据库的连接和操作。本文将为大家介绍cx_Oracle常用语法及应用,帮助读者轻松玩转数据库。

### cx_Oracle安装

在使用cx_Oracle前,需要安装Oracle客户端库和Python包cx_Oracle。可以通过以下步骤实现:

#### 1. Oracle客户端库安装

首先需要从Oracle官网下载Oracle客户端库。在下载时请注意选择正确版本的操作系统和Oracle版本。

#### 2. Python包cx_Oracle安装

可以通过pip或conda安装cx_Oracle:

“`python

pip install cx_Oracle




```python
conda install cx_Oracle

### cx_Oracle连接Oracle数据库

连接Oracle数据库需要以下信息:

– 用户名

– 密码

– 数据库名

– 主机名

– 端口号

连接示例:

“`python

import cx_Oracle

try:

dsn = cx_Oracle.makedsn(host=’hostname’,port=port,sid=’ORCL’)

con = cx_Oracle.connect(user=’username’,password=’pwd’,dsn=dsn)

print(‘连接成功’)

except cx_Oracle.DatabaseError as e:

print(‘连接失败,错误信息:{}’.format(e.args[0]))


### cx_Oracle查询数据

在cx_Oracle中,查询数据的主要方式是通过游标(cursor)实现的。使用游标需要以下步骤:

#### 1. 创建游标

在连接数据库后,可以创建游标,例如:

```python
cursor = con.cursor()

#### 2. 执行SQL语句

在创建游标后,就可以执行SQL语句。

“`python

sql = “SELECT * FROM emp”

cursor.execute(sql)


#### 3. 获取结果

执行SQL语句后,使用fetchone()、fetchmany()或fetchall()获取结果集。

```python
rows = cursor.fetchall()
for row in rows:
print(row)

### cx_Oracle增、删、改数据

在cx_Oracle中,增、删、改数据的方式与查询类似。先创建游标,然后执行SQL语句即可。例如:

“`python

# 插入数据

sql = “INSERT INTO emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (?,?,?,?,?,?,?,?)”

data = (8001,’LiMing’,’Manager’,7839,’2021-01-01′,20000,2000,10)

cursor.execute(sql,data)

con.commit() # 提交事务

# 修改数据

sql = “UPDATE emp SET JOB=? WHERE EMPNO=?”

data = (‘Clerk’,8001)

cursor.execute(sql,data)

con.commit() # 提交事务

# 删除数据

sql = “DELETE FROM emp WHERE EMPNO=?”

data = (8001,)

cursor.execute(sql,data)

con.commit() # 提交事务


### cx_Oracle存储过程及函数调用

在cx_Oracle中,存储过程和函数的调用与SQL语句的执行方式有所不同。

#### 1. 存储过程调用

存储过程调用示例:

```python
# 创建游标
cursor = con.cursor()

# 定义in和out参数
in_name = 'John'
out_salary = cursor.var(cx_Oracle.NUMBER)

# 调用存储过程
cursor.callproc('my_proc',[in_name,out_salary])
# 获取返回值
print('工资:{}'.format(out_salary.getvalue()))

#### 2. 函数调用

函数调用示例:

“`python

# 创建游标

cursor = con.cursor()

# 调用函数

result = cursor.callfunc(‘my_func’,cx_Oracle.NUMBER,[‘John’])

# 获取返回值

print(‘工资:{}’.format(result))


### cx_Oracle批量数据处理

在数据处理中,有时需要对大量数据进行批量操作,可以使用cursor.executemany()实现。例如:

```python
# 批量插入数据
sql = "INSERT INTO emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (?,?,?,?,?,?,?,?)"

data = [
(8001,'LiMing','Manager',7839,'2021-01-01',20000,2000,10),
(8002,'ZhangSan','Clerk',7788,'2021-02-01',15000,1000,20),
(8003,'WangWu','Engineer',7876,'2021-03-01',18000,1500,30)
]

cursor.executemany(sql,data)
con.commit() # 提交事务

### 总结

本文介绍了cx_Oracle的基本语法和应用,包括连接Oracle数据库、查询数据、增、删、改数据、存储过程及函数调用、批量数据处理等。感兴趣的读者可以通过练习来更加熟悉cx_Oracle的应用,玩转数据库。


数据运维技术 » cxOracle语法掌握,你也可以玩转数据库(cx_oracle语法)