-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
断断续续的在看点python方面的知识,一直没有具体实践,今天测试下python连接oracle。
python连接oracle需要先下载个cx_Oracle 包,
可在python官网下载,我是xp的系统,oracle是11g的,python版本是3.3.5,下载了这个包cx_Oracle-5.1.2-11g.win32-py3.3.msi
cx_Oracle下载地址:http://sourceforge.net/projects/cx-oracle/files/5.1.2/
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下载好后直接点击安装即可,然后在将oracle客户端中的oci.dll(或者你本机上安装了oracle文件)拷贝到python的这个目录下面C:\Python33\Lib\site-packages
至于这个oci.dll文件,我为了省事就直接ctrl+f 搜索,找到后就复制到上面那个python目录下面。
然后编辑python脚本文件:
#!/usr/bin/python
#名字要写对,oracle的O字母是大写
import cx_Oracle
username="king"
userpwd="king"
host="127.0.0.1"
port=1521
dbname="orcl"
dsn=cx_Oracle.makedsn(host, port, dbname)
connection=cx_Oracle.connect(username, userpwd, dsn)
cursor = connection.cursor()
sql = "select * from tab"
cursor.execute(sql)
result = cursor.fetchall()
count = cursor.rowcount
print ("=====================" )
print ("Total:", count)
print ("=====================")
for row in result:
print (row)
cursor.close()
connection.close()
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用户名之类的可以根据自己的实际情况进行修改,我第一次将包名写成了cx_oracle,导致总是报错,找不到这个module,粗心大意不可取啊。
上面脚本输出如下:
>>>
=====================
Total: 23
=====================
('A', 'TABLE', None)
('BANKDEPT', 'TABLE', None)
('BIN$gf+2lvkvQu+ivwqM5VWOhg==$0', 'TABLE', None)
('CHLID_T', 'TABLE', None)
('COMPANY', 'TABLE', None)
('DD', 'TABLE', None)
('DEPARTMENT', 'TABLE', None)
('F_NEST', 'TABLE', None)
('JIGOU', 'TABLE', None)
('LAST', 'TABLE', None)
('NN', 'TABLE', None)
('PART_T', 'TABLE', None)
('SALARY', 'TABLE', None)
('SUBBRANCH', 'TABLE', None)
('T1', 'TABLE', None)
('T1_1', 'TABLE', None)
('T2', 'TABLE', None)
('TEST1', 'TABLE', None)
('TEST2', 'TABLE', None)
('TEST3', 'TABLE', None)
('TOTAL_T', 'TABLE', None)
('T_EMP', 'TABLE', None)
('T_T', 'TABLE', None)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
说明我的连接是成功的。
--------------------------------------------
个人一直羡慕那些程序员,可以用代码做很多事情,自己也一直期望可以写出一手好的代码,替代日常工作中那些重复性工作,却总是三天打鱼两天晒网,未曾静下心来做这件事请。当然,很多时候也是受限于实际工作情况,毕竟本身oracle的学习尚有很多不足之处,对于python就难免三心二意了。
现在也不强求什么,也不会做无谓的计划,什么每天看多长时间的python。只是在稍显清闲的时候,静下心来,推敲点python简单语句,争取写些自动查询的脚本,说白了,想学python也是为了给oracle日常运维服务。
唯愿坚持下去。