本以为很简单,结果发现还是有些坑啊
1. 安装cx_oracle
pip install cx_oracle
或者用whi文件,这样你能知道版本号那些https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle
2. 下载Instantclient
这个是关键的一步,一定要对应你的cx_oracle版本,比如上面我是12的,所以下载的instantclient_12_1 然后解压,然后解压将其中的oci.dll拷贝到$Python_Home 或者 $Python_HomeLibsite-packages 目录下,注意一定要版本一致,否则会报ImportError: DLL load failed: 找不到指定的模块。
3.虽然这样是可以使用cx_Oracle了,但是实际操作数据库的时候可能会出现cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle这个错误,解决方法是拷贝oci.dll, oraociei12.dll, oraocci12.dll到site-package中。另外一种方法是为instantclient12c设置环境变量,这样就不用拷贝dll文件了
参考博客
http://blog.csdn.net/longxj04/article/details/64922138
import cx_Oracle
import os
import sys
import pandas as pd
reload(sys)
sys.setdefaultencoding('utf8')
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.AL32UTF8'
username = '**'
password = '**'
tns = '**:**/ORCL'
conn = cx_Oracle.connect(username,password,tns)
cursor = conn.cursor()
cursor.execute('select * from STUDENT')
result = cursor.fetchall()
datas = pd.DataFrame(result)
print datas
cursor.close()
conn.close()
完了又遇到一个很坑的事情,sql里面有中文一直报错,我以为是编码问题,结果是sql里面出现的中文要用双引号而不能用单引号。。。。