win32:
oracle 10g:
安装包:cx_oracle支持的版本和客户端一定要一致,否则就算安装正常了也会报"Unable to acquire Oracle environment handle"
instantclient_10_2.rar
cx_Oracle-5.1.2-10g.win32-py2.7.msi
安装:
1:解压instantclient_10_2.rar到oracle10g
2:如果你安装了oracle客户端则只用将解压后的目下下的oci.dll,oraocci10.dll,oraociei10.dll三个文件拷贝到 Python27\Lib\site-packages目录下即可
3:如果你没安装oracle客户端则需设置:
a)ORACLE_HOME=解压后的oracle10g
b)添加tnsnames.ora,第一次安装时需手动创建此文件
样式如下
# tnsnames.ora Network Configuration File: $ORACLE_HOME\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
TNS_SID=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 1.1.1.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testsid)
)
)
开发:
import cx_Oracle
#建立连接
tns_name=cx_Oracle.makedsn('1.1.1.1',1521,'testsid') #tns连接串自动组合,这个不知道是否可以抛弃tnsnames.ora呢
conn=cx_Oracle.connect(user_name,passwd,tns_name) #建立了连接
#取得游标
cursor=conn.cursor()
#执行sql
cursor.execute(query_sql)
#select操作
#excute sql: select sysdate from dual where 1=1
#ret:(datetime.datetime(2014, 4, 18, 19, 44, 10),)
ret=cursor.fetchall() #fetchone一次取一条,无论一条还是全部,取完之后不可重复取
#非select操作所有执行的操作
conn.commit() #提交变更
#关闭游标
cursor.close() #执行一次sql就关闭一次
#关闭连接
conn.close()