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

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日

相关文章

  • Python Pandas – 将PeriodIndex对象转换为Timestamp并设置频率

    来讲解一下Python Pandas中如何将PeriodIndex对象转换为Timestamp并设置频率。 1. 什么是PeriodIndex对象 在了解如何将PeriodIndex对象转换为Timestamp并设置频率之前,我们先来介绍一下什么是PeriodIndex对象。 PeriodIndex对象是一种表示时间段(period)的数据结构。它由一组具有…

    python-answer 2023年3月27日
    00
  • 使用字典从列表中创建pandas数据框架

    使用字典从列表中创建pandas数据框架的过程非常简单,可以分为以下三个步骤: 创建字典,将键值对分别表示为列名和列的数据; 使用pandas.DataFrame()函数将字典转换为数据框架; 可以使用head()和info()方法查看数据框架的前几行和基本信息。 下面我们来看一个实例。 假设我们有一个列表,列表中包含多个字典,每个字典代表一行数据,如下所示…

    python-answer 2023年3月27日
    00
  • 如何使用pandas cut()和qcut()

    pandas是一个强大的数据分析和处理库,其中包含了许多用于数据分割、分组和汇总的工具。其中两个特别有用的函数是cut()和qcut(),它们可以用来将数据划分为不同的区间或者分位数,并为每个区间或分位数分配一个标签。 pandas cut()函数 pandas cut()函数提供了一种将一组值划分为不同区间(也称为‘面元’)的方式。cut()函数可以接收多…

    python-answer 2023年3月27日
    00
  • pandas 转换成行列表进行读取与Nan处理的方法

    下面是详细讲解“pandas转换成行列表进行读取与Nan处理的方法”的完整攻略。 1. 转换成行列表 将pandas数据框转换为行列表,可以使用.values.tolist()方法。这样做的好处是可以将数据框中的数据按行打印出来,更加直观地了解数据的结构和内容。 例如,假设有以下的数据框: import pandas as pd # 创建数据框 df = p…

    python 2023年5月14日
    00
  • 如何获取Pandas数据框架的第一行

    对于 Pandas 数据框架,获取第一行数据的方式有多种。以下是其中一些常见的方式: 方法一:使用 iloc 方法 可以使用 iloc 方法来获取指定行数的行数据。 iloc 方法的参数是一个整数,表示要获取的行数,从0开始计数。例如,要获取 Pandas 数据框架的第一行数据,可以使用如下代码: import pandas as pd # 创建一个示例的 …

    python-answer 2023年3月27日
    00
  • Python matplotlib实用绘图技巧汇总

    Python matplotlib实用绘图技巧汇总 简介 matplotlib是Python中常用的数据可视化库,其提供了各种绘图工具,方便用户进行数据分析和呈现。本文将介绍一些实用的matplotlib绘图技巧,并提供相应的示例说明。 技巧汇总 1. 定义坐标轴范围 通过plt.xlim()和plt.ylim()可以定义横纵坐标轴的范围。 示例代码: im…

    python 2023年6月13日
    00
  • Python pandas读取CSV文件的注意事项(适合新手)

    让我来为您讲解“Python pandas读取CSV文件的注意事项的完整攻略”。 什么是CSV文件? CSV(Comma-Separated Values)意思为“逗号分隔值”,通俗来说,就是每一行表示一条数据,每个字段之间用逗号进行分隔,不同行之间用回车换行进行分隔的一种文本文件格式。 为什么要使用pandas读取CSV文件? pandas是python中…

    python 2023年5月14日
    00
  • 使用Pandas将字符串中缺少的空白处替换为出现频率最低的字符

    首先需要使用Pandas读取需要处理的数据。在Pandas中,使用read_csv()函数可以方便地读取CSV文件中的数据,例如: import pandas as pd df = pd.read_csv(‘data.csv’) 假设data.csv文件中包含有需要处理的字符串数据,接下来我们就可以开始对缺失的空白处进行替换。具体的方法如下: # 统计出现频…

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