考试网 >> IT认证 >> Oracle >> Oracle指导 >> 用Oracle和Python武装你的头脑(5)

用Oracle和Python武装你的头脑(5)

发布时间:2006-06-28 10:30     点击:

嵌套

下面,您需要创建一个包含 init_default.ora 中的默认参数的相似字典。您完全可以将其读取到全新的变量,但这里我们将介绍对象如何可靠地嵌套在 Python 中。您将创建一个简单的父目录 initParams,并针对每个 init.ora 文件在其中嵌套一个目录。您还将导入刚刚编写的文件,以便可以调用它的 read() 函数。创建一个名为 compareInitOra.py 的新文本文件。

import readInitOra

initParams = {}

# brackets denote a list that we can loop through

for fileName in ['init_orcl.ora', 'init_default.ora']:

initParams[fileName] = readInitOra.read(fileName)

print initParams

c:\> python compareInitOra.py

{'init_orcl.ora':

{'UNDO_MANAGEMENT':'AUTO', 'COMPATIBLE': '9.2.0.0.0',

'DB_BLOCK_SIZE':'8192', 'FAST_START_MTTR_TARGET': '300',

'SGA_MAX_SIZE':'157286400, 'SHARED_POOL_SIZE': '50331648'}

'init_default.ora':

{'COMPATIBLE':'9.2.0.0.0', 'DB_BLOCK_SIZE': '4096',

'FAST_START_MTTR_TARGET':'300', 'SGA_MAX_SIZE': '100663296',

'SHARED_POOL_SIZE': '50331648'}}

这次的输出包含一些空格,以帮助您查看嵌套结构。您可以轻松地编写 Python 代码以可靠地打印它,也可以使用 Python 的 pprint 模块,但由于我们是数据库用户,因此将该数据置入 Oracle 数据库中。

在 Python 中使用 SQL

要访问数据库,Python 解释器需要安装数据库模块。您有许多选择,这些选择均遵守标准化的 API 规范,并且曾经以编程方式使用过 ODBC 或 JDBC 的任何人均非常熟悉它们。您将使用 cx_Oracle,因为它比较易于安装。只需下载一个与您的 Python 和 Oracle 数据库版本匹配的 Windows 安装程序。

安装 cx_Oracle 后,返回 Python 命令行解释器进行试用。由于 cx_Oracle 是一个独立于核心 Python 语言的模块,因此在将其用于任何会话或脚本之前必须导入它。

>>> import cx_Oracle

请记住要使用大写字母!下面,我们将创建一个用于存储结果的表。

>>> orcl = cx_Oracle.connect('scott/tiger@orcl')

>>> curs = orcl.cursor()

>>> sql = """CREATE TABLE INIT_PARAMS

... ( fileName VARCHAR2(30),

... param VARCHAR2(64),

... value VARCHAR2(512) )"""

三个引号 (""") 是一个用于输入包含换行符的方便语法。Python 解释器将其提示符从 >>> 更改为 ... - 提醒您将继续从上一行开始的输入。

>>> curs.execute(sql)

>>> curs.close()

现在您的表已经准备就绪,下面我们将编写 recordInitOra.py 来填充它。

import readInitOra, cx_Oracle

initParams = {}

for fileName in ['init_orcl.ora', 'init_default.ora']:

initParams[fileName] = readInitOra.read(fileName)

orcl = cx_Oracle.connect('scott/tiger@orcl')

curs = orcl.cursor()

for fileName in initParams.keys():

for param in initParams[fileName].keys():

value = initParams[fileName][param]

sql = """INSERT INTO INIT_PARAMS VALUES

(:fileName, :param, :value)"""

bindVars = {'fileName':fileName,

'param':param, 'value':value}

curs.execute(sql, bindVars)

curs.close()

orcl.commit()


版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有