Python读写及备份oracle数据库操作示例

yizhihongxing

Python读写及备份oracle数据库操作示例

简介

本文将讲解使用Python读写以及备份Oracle数据库的操作示例,使用Python的cx_Oracle库实现。

在操作Oracle数据库时,我们可以使用cx_Oracle库,其可以让我们在Python中进行对Oracle数据库的操作,如连接、创建表、添加数据等等。此外,我们还会使用Python内置的os模块进行数据库的备份操作。

准备工作

在开始使用cx_Oracle库之前,需要先安装好Oracle Instant Client和cx_Oracle库。安装步骤可以参考cx_Oracle Installation,并根据自己的需要选择相应的版本。

在安装完成后,可以使用pip安装cx_Oracle库,输入以下命令即可:

pip install cx_Oracle

连接Oracle数据库

在进行任何对Oracle数据库的操作之前,我们需要先建立一个连接。在进行连接时,需要提供Oracle数据库的地址、端口、用户名及密码等信息。

import cx_Oracle

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

print(conn.version)

以上代码建立了一个对Oracle数据库的连接,并输出了Oracle数据库的版本号。

创建表

在建立连接之后,我们可以创建一张表来存储数据。在创建表时,需要提供表名以及表的列名和数据类型等信息。

import cx_Oracle

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

cursor = conn.cursor()

cursor.execute("""
CREATE TABLE example (
    id NUMBER,
    name VARCHAR2(50),
    age NUMBER(3)
)
""")

cursor.close()
conn.close()

以上代码创建了一张名为example的表,其中包含3个列:id、name和age。

添加数据

在创建了表之后,我们可以向表中添加数据。在添加数据时,需要提供的是数据的值。

import cx_Oracle

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

cursor = conn.cursor()

cursor.execute("""
INSERT INTO example (id, name, age)
VALUES (1, 'Alice', 20)
""")
conn.commit()

cursor.close()
conn.close()

以上代码向刚刚创建的example表中插入了一条数据。

数据库备份

在操作数据库时,我们通常需要进行备份操作,以防止数据丢失或其他问题。在Python中,可以使用os模块提供的方法来实现数据库备份。

import cx_Oracle
import os
import datetime

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

backup_dir = 'backup'
if not os.path.exists(backup_dir):
    os.makedirs(backup_dir)

backup_file = os.path.join(backup_dir, '{}.bak'.format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')))
os.system('expdp {}/{}@{} directory=DATA_PUMP_DIR dumpfile={} logfile={}.log'.format(
    'username', 'password', dsn_tns, backup_file, backup_file))

conn.close()

以上代码使用Oracle提供的expdp命令将数据库备份到指定目录下,备份文件的命名规则为当前时间。

另外,需要先在Oracle中创建一个名为DATA_PUMP_DIR的目录,方便进行备份操作。创建目录的命令如下:

CREATE DIRECTORY DATA_PUMP_DIR AS '/path/to/directory';  # 数据库保存备份的目录
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO username;  # 给username用户授权

示例说明

示例1:插入多条数据

import cx_Oracle

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

cursor = conn.cursor()

data = [
    (1, 'Alice', 20),
    (2, 'Bob', 25),
    (3, 'Cindy', 30)
]

cursor.executemany("""
INSERT INTO example (id, name, age)
VALUES (:1, :2, :3)
""", data)

conn.commit()

cursor.close()
conn.close()

以上代码使用executemany()方法一次性插入多条数据。

示例2:备份Oracle数据库

import cx_Oracle
import os
import datetime

dsn_tns = cx_Oracle.makedsn(
    'address',  # Oracle数据库地址
    '1521',  # Oracle数据库端口
    service_name='service_name'  # Oracle数据库服务名
)
conn = cx_Oracle.connect(
    user='username',  # Oracle数据库用户名
    password='password',  # Oracle数据库密码
    dsn=dsn_tns
)

backup_dir = 'backup'
if not os.path.exists(backup_dir):
    os.makedirs(backup_dir)

backup_file = os.path.join(backup_dir, '{}.bak'.format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')))
os.system('expdp {}/{}@{} directory=DATA_PUMP_DIR dumpfile={} logfile={}.log'.format(
    'username', 'password', dsn_tns, backup_file, backup_file))

conn.close()

以上代码使用Oracle提供的expdp命令将数据库备份到指定目录下,备份文件的命名规则为当前时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python读写及备份oracle数据库操作示例 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 对pandas中时间窗函数rolling的使用详解

    首先我们来看一下什么是pandas中的时间窗函数rolling。rolling是pandas库中的时间窗口函数,它可以让我们实现类似于滑动平均的计算方式。具体而言,我们可以创建一个滑动窗口,来计算任意时刻窗口内的数据统计指标(如均值、标准差等)。下面是rolling函数的基本格式: rolling(window[, min_periods, center, …

    python 2023年5月14日
    00
  • pandas中提取DataFrame某些列的一些方法

    提取DataFrame中的某些列是数据分析中经常遇到的任务,下面是几种在pandas中提取DataFrame某些列的方法: 使用列名提取 通过列名提取DataFrame中的某些列是最常见的做法,可以使用方括号来提取一列或多列,如下所示: import pandas as pd # 创建一个DataFrame df = pd.DataFrame({ ‘A’: …

    python 2023年5月14日
    00
  • 在Pandas中创建一个流水线

    在 Pandas 中,流水线 (Pipeline) 是一个使代码更加简洁易读的好工具。本文将详细讲解如何在 Pandas 中创建一个流水线。 什么是 Pandas 流水线? Pandas 流水线是一个将多个数据操作整合在一起的工具,它可以帮助我们更好地组织代码,使代码更加优雅和简洁。流水线的组成部分通常包括数据预处理、特征选择、特征工程和模型训练等多个步骤,…

    python-answer 2023年3月27日
    00
  • Python 包含汉字的文件读写之每行末尾加上特定字符

    为了在Python中读写包含中文字符的文件并在每行末尾加上特定字符,有以下几个步骤: 1. 打开文件 在Python中打开文本文件,可能需要设置编码方式(默认是UTF-8): with open(file_path, ‘r’, encoding=’utf-8′) as f: # 这里使用with语句是为了自动关闭文件 这个步骤中, file_path 是文件…

    python 2023年6月13日
    00
  • Python中的Pandas.get_option()函数

    Pandas.get_option()函数是一个用于获取Pandas选项卡的函数,它允许用户查询和更改Pandas库的设置选项。 Pandas中有数百个设置选项,它们定义了Pandas如何处理数据的细节。使用get_option函数可以查询当前设置选项的值。 函数的语法如下: pandas.get_option(pat, display=None) 参数说明…

    python-answer 2023年3月27日
    00
  • 通过Pandas读取大文件的实例

    如果要读取大文件,Pandas 提供了一些方法来确保内存占用最小化。下面是通过 Pandas 读取大文件的完整攻略: 步骤1:导入 Pandas 库 import pandas as pd 步骤2:根据文件类型选择读取方法 常见的文件读取方法有 read_csv、read_excel、read_sql 等,我们需要根据文件类型进行选择。比如,我们要读取一个 …

    python 2023年5月14日
    00
  • 绕过Pandas的内存限制

    当我们在处理大量数据时,常常会遇到内存限制的问题。Pandas是一个常用的数据分析库,但它有一定的内存限制。下面我们来详细讲解如何绕过Pandas的内存限制。 分块读取数据 将大文件切割成多个小文件进行批量读取,这样不会占用大量内存,可以节省内存的使用。 import pandas as pd # 设定文件路径 file_path = "large…

    python-answer 2023年3月27日
    00
  • 如何在Python中改变Pandas的日期时间格式

    在Python中,Pandas是一个非常流行的数据处理库,它可以用来读取、处理、分析和操作各种数据类型,其中包括日期时间数据。在使用Pandas进行数据分析时,经常需要对日期时间格式进行操作,比如将日期时间格式改变为另一种格式。下面是在Python中改变Pandas的日期时间格式的完整攻略,包括常见的转换方法和实例说明。 1. 读取数据 首先,我们需要读取包…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部