📜  如何使用 cxoracle python 执行查询(1)

📅  最后修改于: 2023-12-03 14:51:52.200000             🧑  作者: Mango

如何使用 cx_Oracle Python 执行查询

简介

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() 方法

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() 方法

使用 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 官方文档中的更高级的内容。