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技术站