使用 cxoracle 查询表另外一种数据库查询方式(cx_oracle查表)
使用 cx_oracle 查询表:另外一种数据库查询方式
在 Python 中查询数据库是十分常见的操作,可以通过 MySQL、Oracle、SQL Server 等数据库来存储数据,也可以通过 API 接口来查询数据。其中使用 cx_oracle 查询 Oracle 数据库是一种十分常用的方式,本文将介绍如何使用 cx_oracle 查询表。
在 Python3 官方网站上,我们可以找到 cx_oracle 的安装包。可以通过 pip 直接安装:
pip install cx_oracle
在使用 cx_oracle 之前,需要安装一下 Oracle 客户端。将下载的 Oracle Instant Client 解压到某个目录下,然后在系统变量 Path 中添加这个目录。例如在 Windows 系统下,将 Instant Client 解压到 C:\instantclient_19_5 目录下,将其路径添加到系统变量 Path 中,即可完成安装。
import cx_Oracle as oracle
conn = oracle.connect('user/password@host:port/database')cursor = conn.cursor() # 创建游标对象
sql = "SELECT * FROM table_name"cursor.execute(sql) # 执行查询语句
result = cursor.fetchall() # 获取查询结果
以上是一个最基础的查询操作,首先使用 connect 方法建立与数据库的连接。其参数是一个字符串,格式为”用户名/密码@主机:端口/实例名”。然后使用 cursor 方法创建一个游标对象,可以用于执行任意 SQL 语句,最后执行 SQL 语句并获取查询结果。
查询结果可以用 fetchone,fetchmany 和 fetchall 等方法来获取。这些方法分别对应获取一条记录、获取多条记录和获取全部记录。需要注意的是,在查询结果比较大的情况下,使用 fetchall 获取全部记录会非常慢甚至导致内存溢出。
import cx_Oracle as oracle
with oracle.connect('user/password@host:port/database') as conn: with conn.cursor() as cursor:
cursor.execute("SELECT * FROM table_name") result = cursor.fetchall()
上述代码片段展示了使用 with 语句的写法,可以非常方便的管理数据库连接和游标对象。with 语句使用起来类似于 try-finally 语句,执行完毕后会自动关闭游标和连接。
在实际使用中,我们可以通过参数绑定等方式来执行一些复杂的 SQL 语句,如以下代码片段演示了如何使用参数绑定实现 SQL 注入预防。
import cx_Oracle as oracle
username = "test"password = "test123"
with oracle.connect('user/password@host:port/database') as conn: with conn.cursor() as cursor:
sql = "SELECT * FROM user_info WHERE username=:username AND password=:password" cursor.execute(sql, {"username": username, "password": password})
result = cursor.fetchall()
以上代码中,将用户名和密码作为参数传入 SQL 语句中,而不是直接将其嵌入到 SQL 语句中。这样做可以有效的避免 SQL 注入攻击。
cx_oracle 是 Python 中一个强大的 Oracle 数据库驱动工具包,使得我们可以通过 Python 来操作 Oracle 数据库。想要灵活高效地操作 Oracle 数据库,掌握 cx_oracle 工具包的使用是必不可少的。