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日

相关文章

  • 对pandas中to_dict的用法详解

    下面给您详细讲解一下“对pandas中to_dict的用法详解”的攻略: to_dict方法的应用场景 pandas的DataFrame和Series是非常常用的数据结构,我们在实际使用中常常需要将其转换为字典,这样可以更方便地进行一些数据处理。 to_dict方法就是pandas中用来将DataFrame或Series对象转换为字典的方法。它的用法非常简单…

    python 2023年5月14日
    00
  • Pandas加速代码之避免使用for循环

    为了加速Pandas代码的执行效率,我们应该尽可能地避免使用Python的for循环。以下是避免使用for循环的完整攻略: 1. 使用向量化操作 Pandas的核心功能是基于向量化的操作。这意味着,我们可以直接使用函数和运算符来对整个Series或DataFrame执行操作,而不需要使用for循环。例如,我们可以使用apply()函数在Series或Data…

    python 2023年6月13日
    00
  • Python中pandas dataframe删除一行或一列:drop函数详解

    当我们使用pandas库中的DataFrame数据结构进行数据分析时,经常需要删除某些行或列来清洗数据或者简化操作。在Python中,可以使用drop函数来删除DataFrame中的行或列。 drop函数的语法和参数 删除行的操作: df.drop(labels=None, axis=0, index=None, columns=None, level=No…

    python 2023年5月14日
    00
  • 从多索引Pandas数据框架中删除特定的行

    想要从多索引Pandas数据框架中删除特定的行,可以使用drop()方法。下面是详细的步骤和实例说明: 确定要删除的行的索引。 使用drop()方法,将要删除的索引传递给该方法,指定axis参数为0,表示删除行。 如果是多索引DataFrame,需要指定要删除的行在哪一级索引上。 下面通过一个实例来演示如何从多索引Pandas数据框架中删除特定的行。假设我们…

    python-answer 2023年3月27日
    00
  • Python Pandas学习之Pandas数据结构详解

    Python Pandas学习之Pandas数据结构详解 简介 Pandas是基于NumPy的一个开源数据分析与处理库,提供了各种数据结构和处理工具,使我们能够使用Python快速处理各种数据。Pandas主要包含三种数据结构:Series、DataFrame和Panel。 Series Series是一种一维数组结构,可以保存任何数据类型。我们可以通过传递…

    python 2023年5月14日
    00
  • 使用字典来重新映射Pandas DataFrame列中的值

    使用字典来重新映射Pandas DataFrame列中的值,是一种非常常见的数据处理操作。具体攻略可以分为以下几个步骤: 1. 创建示例DataFrame 首先,需要创建一个示例的DataFrame来说明操作。下面是一个简单的例子: import pandas as pd data = { ‘Region’: [‘North’, ‘South’, ‘East…

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

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

    python 2023年5月14日
    00
  • Python pandas求方差和标准差的方法实例

    了解你要求的内容,我将给出“Python pandas求方差和标准差的方法实例”的详细攻略。 1. 关于Pandas Pandas是一种开源的数据分析和处理工具。它提供了一组简单易用的数据结构和函数,可以大大简化我们的数据分析和处理过程。其中包括了非常多的统计学方法和函数。 2. 求方差和标准差 方差与标准差都是描述数据分散程度的统计量。方差描述数据偏离其平…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部