📅  最后修改于: 2023-12-03 14:51:52.200000             🧑  作者: Mango
cx_Oracle 是 Python 语言下操作 Oracle 数据库的模块,它提供了一系列 API 来连接和操作 Oracle 数据库。本文将简单介绍如何使用 cx_Oracle 模块来执行查询语句。
在使用 cx_Oracle 之前,需要先安装该模块,可以通过 pip 命令来安装,如下所示:
pip install cx_Oracle
另外,还需要将 Oracle Instant Client 安装到本地,具体安装方法可以参考 Oracle 官方文档。
在使用 cx_Oracle 模块执行查询之前,需要先连接到 Oracle 数据库。连接的核心 API 是 cx_Oracle.connect()
,它的基本参数包括用户名、密码、数据库地址、端口号等信息。
下面是一个简单的示例,连接到本地 Oracle 数据库:
import cx_Oracle
dsn = cx_Oracle.makedsn("localhost", 1521, "XE")
conn = cx_Oracle.connect(user="username", password="password", dsn=dsn)
连接到数据库之后,就可以执行查询语句了。cx_Oracle 模块提供了两种方式来执行查询语句:
cursor.execute()
方法。cursor.prepare()
和 cursor.execute()
方法。下面我们来分别介绍这两种方式。
cursor.execute()
方法用于执行一条 SQL 查询语句,该方法返回一个游标对象。
下面是一个简单的示例,查询一个名为 user
的表:
import cx_Oracle
dsn = cx_Oracle.makedsn("localhost", 1521, "XE")
conn = cx_Oracle.connect(user="username", password="password", dsn=dsn)
cursor = conn.cursor()
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
for row in result:
print(row)
该示例中,我们先用 conn.cursor()
方法创建一个游标对象,然后执行 SQL 查询语句 SELECT * FROM user
,最后用 fetchall()
方法获取查询结果,并遍历输出每一行。
使用 cursor.prepare()
和 cursor.execute()
方法的方式,如果需要执行多次相同的查询语句,则会更加高效。
具体执行方式如下所示:
import cx_Oracle
dsn = cx_Oracle.makedsn("localhost", 1521, "XE")
conn = cx_Oracle.connect(user="username", password="password", dsn=dsn)
cursor = conn.cursor()
cursor.prepare("SELECT * FROM user WHERE name = :1")
names = ["Tom", "Jerry", "Lucy"]
for name in names:
cursor.execute(None, [name])
result = cursor.fetchall()
print(result)
该示例中,我们先调用 cursor.prepare()
方法,将查询语句 SELECT * FROM user WHERE name = :1
预编译,然后在循环中调用 cursor.execute()
方法执行查询,并传递一个参数,获取查询结果,并输出到控制台。
执行完查询之后,最好及时关闭数据库连接。
下面是一个简单的示例,关闭数据库连接的方式:
import cx_Oracle
dsn = cx_Oracle.makedsn("localhost", 1521, "XE")
conn = cx_Oracle.connect(user="username", password="password", dsn=dsn)
cursor = conn.cursor()
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
for row in result:
print(row)
# 关闭 cursor 对象和连接对象
cursor.close()
conn.close()
本文简单介绍了如何使用 cx_Oracle 模块来执行查询语句。在实际项目开发中,可能还需要处理连接异常、事务处理等其他问题。如果您对此感兴趣,可以参考 cx_Oracle 官方文档中的更高级的内容。