今天第一次使用Python连接Oracle数据库(多么可怕,三年码农没用Python手动连过Oracle)

首先:

pip install cx_Oracle

  好,安装完成,测试代码如下:

from sqlalchemy import create_engine  

db_engine = create_engine('oracle://xynsx:whjyg_xynsx@10.128.85.8:1521/xyora')
conn=db_engine.connect()
result=conn.execute('SELECT * FROM PJ_CZP')
conn.close() for item in result:
print('item------------->', item)

  好,从这开始,悲剧了

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: 32-bit Oracle Client library cannot be loaded: 
"The specified module could not be found". See https://oracle.github.io/odpi/doc/installation.html#windows for help
(Background on this error at: http://sqlalche.me/e/4xp6)

  报错了,简单看是因为我用的是32位的Oracle Client 包,它找不到了。立马从Navicat Premium安装路径中找到instantclient_11_2,在其目录下找到三个dll文件:

oci.dll,oraocci11.dll,oraociei11.dll,拷贝到Python目录下的:Lib\site-packages目录下

再次测试,再次悲剧,提示不能加载正常,好吧,我的Navicat Premium是64位的,重新下载一个instantclient_11_2的32位版本,然后三个dll文件重新拷贝。

成功,数据取到了,但是。。。。。

各种问好是什么鬼?

查看发现Oracle默认编码格式为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

找到原因,就要改正了。

修改代码如下:

# coding:utf-8

import os

from sqlalchemy import create_engine  

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db_engine = create_engine('oracle://xynsx:whjyg_xynsx@10.128.85.8:1521/xyora') conn=db_engine.connect()
result=conn.execute('SELECT * FROM PJ_CZP')
conn.close()
print('res===============>', result)
for item in result:
print('item------------->', item)

  好了,完全木有问题了!

Python cx_Oracle问题处理的更多相关文章

  1. Python cx_Oracle 安装小记

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python cx_Oracle 安装小记 SQLAlchemy 是 Pytho ...

  2. Python cx_oracle自动化操作oracle数据库增删改查封装,优化返回查询数据

    # coding=utf-8 import cx_Oracle import os import json os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_C ...

  3. python cx_Oracle模块的安装和使用

      $wget http://download.oracle.com/otn/linux/instantclient/10204/basic-10.2.0.4.0-linux-x86_64.zip 3 ...

  4. python cx_oracle 环境搭建

    背景说明: 之前的环境本来是可以用的,是另外一个项目(python27)需要的时候搭建的.新项目采用的是python36,安装的cx_oracle的版本是7,而环境中的Oracle客户端是11,导致p ...

  5. ImportError: No module named 'cx_Oracle'问题处理过程记录,安装python cx_Oracle库

    错误如下: E:\pargram>python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [M ...

  6. python cx_Oracle install

    Ubuntu install  python-cx_Oracle 1: install alien tools  . sudo apt-get install alien 2: dowload fol ...

  7. python cx_oracle单个表中批量插入数据

  8. python使用cx_Oracle连接oracle

    1.使用pip命令安装cx_Oracle $ pip install cx_Oracle 2.安装oracle客户端,并添加到path 下载路径: http://www.oracle.com/tech ...

  9. python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

    python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import cre ...

随机推荐

  1. redis三种连接方式

    安装 tar zxvf redis-2.8.9.tar.gz cd redis-2.8.9 #直接make 编译 make #可使用root用户执行`make install`,将可执行文件拷贝到/u ...

  2. 洛谷 P3128 [USACO15DEC]最大流Max Flow-树上差分(点权/点覆盖)(模板题)

    因为徐州现场赛的G是树上差分+组合数学,但是比赛的时候没有写出来(自闭),背锅. 会差分数组但是不会树上差分,然后就学了一下. 看了一些东西之后,对树上差分写一点个人的理解: 首先要知道在树上,两点之 ...

  3. SpringBoot整合SpringBatch实用简例

    SpringBatch主要是一个轻量级的大数据量的并行处理(批处理)的框架. 作用和Hadoop很相似,不过Hadoop是基于重量级的分布式环境(处理巨量数据),而SpringBatch是基于轻量的应 ...

  4. 木材加工(LintCode)

    木材加工 有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k.当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度. 样例 有3根木头[232 ...

  5. sed 插入和替换

    sed -i '/参考行/i\插入内容' *.ksh sed -i 's,原内容,替换后内容,g' *.ksh

  6. Hive的严格模式

    在hive里面可以通过严格模式防止用户执行那些可能产生意想不到的不好的效果的查询,从而保护hive的集群. 用户可以通过 set hive.mapred.mode=strict 来设置严格模式,改成u ...

  7. BZOJ 2956 模积和(分块)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2956 [题目大意] 求∑∑((n%i)*(m%j))其中1<=i<=n,1 ...

  8. Gym 101128F Sheldon Numbers(网络流)

    [题目链接] http://codeforces.com/gym/101128/attachments [题目大意] 给出一张地图,分为高地和低地,高低地的交界线上划有红线, 现在要开小车跨过每条红线 ...

  9. python基础之if,while,for

    流程控制之if判断 根据女性年龄不同的不同叫法,如: age = 24 if age < 18: print('小妹妹好') elif age <28: print('小姐姐好') els ...

  10. (小规模)b牌棋盘完美覆盖数

    (小规模)b牌棋盘完美覆盖数 考虑一个普通的国际象棋棋盘,它被分成8*8(8行8列)的64个正方形.设有形状一样的多米诺骨牌,每张牌恰好覆盖棋盘上相邻的两个方格(即1*2的骨牌).那么能否把32个这样 ...