计算机等级考试 水平考试 微软认证 思科认证 Oracle认证 Linux认证

外语类四 六 级 商务英语 公共英语 GRE GMAT 托 福 雅 思

资格类:公 务 员 报 关 员 司法考试 导游考试 会计职称 注册会计师

学历类:考研入学 自学考试 成人高考 法律硕士 MBA/MPA

首页>>Oracle认证>>:用Oracle和Python武装你的头脑(6)

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

以上就是全部代码了。注意,您这次在 SQL 字符串中使用了绑定变量,并在一个单独字典中为它们提供了值。使用绑定变量可以帮助您摆脱 SPCSP(防止错误使用共享池协会)的麻烦。

从查询中获取结果略微复杂一些。对游标对象调用 execute() 后,可以使用 fetchone() 一次获取一行,也可以使用 fetchall() 获取所有行的列表。无论在哪种情况下,每一行均采用字节组(即可以由数值索引访问的有序值序列)的形式。例如,我们将编写 compareInitOra.py 来打印与 V$PARAMETER 中的当前值冲突的 init_orcl.ora 参数:

import readInitOra, cx_Oracle

def readLiveParams():

liveParams = {}

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

curs = orcl.cursor()

curs.execute('SELECT name, value FROM V$PARAMETER')

row = curs.fetchone()

while row:

(param, val) = (row[0], row[1])

liveParams[param.upper()] = val

row = curs.fetchone()

return liveParams

liveParams = readLiveParams()

fileName = 'init_orcl.ora'

fileParams = readInitOra.read(fileName)

for (param, val) in fileParams.items():

liveVal = liveParams.get(param)

if liveVal != val:

print """For %s, V$PARAMETER shows %s,

but the file %s shows %s""" % \

(param, liveVal, fileName, val)

Python 的对象关系映射工具

您可能对对象关系映射 (ORM) 工具很感兴趣,这些工具可以取代 SQL 的编写并为编程人员提供一个面向对象的界面。Oracle TopLink 便是一个适用于 Java 的对象关系映射器的例子。用于 Python 的与 Oracle 兼容的 ORM 工具有:

Modeling Object-Relational Bridge for Python

forgetSQL

ll.orasql

SQLObject(马上或很快便将支持 Oracle)

sqlWrap.p

该脚本引入了一些您还没见过的技巧:

对字典 fileParams 调用 items() 将返回一个(键, 值)对列表。可以通过在 for 语句中指定两个循环变量来遍历这些键值。

调用 liveParams.get(param) 的工作方式类似于 liveParams[param],区别在于如果在 liveParams 中未找到参数,则将返回一个错误 - 非常类似于“ORA-01403:no data found in PL/SQL”消息。而 liveParams.get(param) 将在 liveParams 中不存在参数的情况下返回 None。

Python 可以使用 % 运算符执行字符串替换。与 C 的 printf 相似,%s 表示将在该点插入一个字符串形式的值。这些值按顺序从 % 之后的字节组中提取。

最后一行代码比您在没有换行符的情况下进行键入运行时间更长,因此您使用了一个反斜线,从而打破了 Python 将换行符解释为命令结尾这一通常的规则。


热 点 导 读

 

特 别 推 荐

 

最 新 文 章

 

最 新 文 章

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

2003-2005 www.51kao.com 考试信息网