Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)

首先声明Python27+Windows32安装

我的电脑Windows版本是64位的,但是由于Pycharm中的pycrypto中使用了C语言的代码所以我在装Pycharm的时候装的是32位的,不需要下载其他插件去支持它。

其次,为了兼容32位Pycharm所以我安装了32位的Oracle,这也是需要特别注意的一点,Pycharm的版本必须和Oracle数据库版本相对应。否则安装上去之后连接不了。我就吃了一次亏,然后就是各种找注册表完全卸载Oracle重装。折腾了一天多时间遇到很多问题,例如终端可以运行成功但是IDE总是cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle、找不到指定模块、32位与Python不兼容等等,按照我这个流程走的话不到十分钟你就可以搞定了数据库的连接了,如果你也遇到以上问题可以看看自己少了哪一步。

废话少说先上资源:

Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第1张图片
百度云盘链接:http://pan.baidu.com/s/1o8bjGzo 密码:ey4u

1.如果没有Python的先安装Python27.具体安装步骤一直next就行。

2.选中这两个解压缩:
Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第2张图片
具体安装流程看这里
http://www.2cto.com/database/201208/150620.html

安装完成之后根据你安装的Oracle目录找到以下这两个文件并复制:
Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第3张图片
Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第4张图片

把以上两个文件复制到你安装的Python的根目录例如我将这两个文件复制到我的Python根目录:
这里写图片描述

3.安装cx_Oracle,一直next就行。

4.解压缩instantclient-basic-win32-11.2.0.1.0.zip得到文件
(解决Pycharm运行中cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle问题)
Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第5张图片

全选复制到你的Python根目录\Lib\site-packages例如我的:
这里写图片描述

5.然后打开Pycharm-File-Setting你会发现
Python(Pycharm)连接Oracle数据库之cx_Oracle的使用(cx_Oracle在pyCharm中报错)_第6张图片

6.接下来让我们运行一段代码吧

cmd终端直接运行

python
import cx_Oracle
cx_Oracle.connect('Nfcos_dev/nfc2017dev@//192.168.39.198:1521/nfcos')
cursor = conn.cursor()
cursor.execute('select * from tbl_pay_order_info')
result = cursor.fetchall()
print (cursor.rowcount)
for row in result:
    print row#此处特别注意前面空格
cursor.close()
conn.close()

用Pycharm

# coding:UTF-8

#引用模块cx_Oracle
import cx_Oracle
import unittest

class ConnectOracle(unittest.TestCase):
    def test_oracleConnect(self):
        try:
            #连接数据库,参数参考cx_Oracle使用
            conn = cx_Oracle.connect('用户名/密码@localhost:1521/数据库名称')
            #获取cursor
            cursor = conn.cursor()
            #使用cursor进行各种操作
            cursor.execute('select * from 你的表名')
            result = cursor.fetchall()
            print (cursor.rowcount)
            for row in result:
                print row
            #关闭cursor
            cursor.close()
            #关闭连接
            conn.close()
        except cx_Oracle.Error, e:
            print "Oracle Error %d: %s", e.args[0], e.args[1]

if __name__ == '__main__':
    # ConnectOracle().test_oracleConnect()
    suite = unittest.TestSuite()
    suite.addTest(ConnectOracle("test_oracleConnect"))
    unittest.TextTestRunner().run(suite)

怎么样?是不是得到你想要的结果了。最后只想对自己说一句:So easy!

你可能感兴趣的:(技术笔记)