docker--在Anaconda jupyter 容器中使用oracle数据源时,Oracle客户端安装配置及使用示例

配置oracle 11.2 客户端

  • 将instantclient-basic-linux.x64-11.2.0.4.0.zip解压至/home/jupyter/oracle/
  • 将instantclient-sqlplus-linux.x64-11.2.0.4.0.zip解压/home/jupyter/oracle/【可选,提供sqlplus命令】
  • 复制【操作系统一般都有安装libaio.so】 cp /usr/lib64/libaio.so.1 /home/jupyter/oracle/instantclient_11_2/
  • ln -s /home/jupyter/oracle/instantclient_11_2/libclntsh.so.11.1 /home/jupyter/oracle/instantclient_11_2/libclntsh.so
bash 复制代码
docker run -d --rm --name=jupyter-server -p 8888:8888 \
	-e  LD_LIBRARY_PATH=/home/oracle/client:$LD_LIBRARY_PATH 
	-v /home/jupyter/notebook:/root/jupyter:rw 
	-v /home/jupyter/oracle/instantclient_11_2:/home/oracle/client 
	-v /home/jupyter/assets:/opt/conda/lib/python3.9/site-packages/notebook/static/components/pyecharts/assets:ro jupyter:2023.8.23

在jupyter中使用示例

导入依赖m

python 复制代码
import cx_Oracle
import pandas as pd
import os
from sqlalchemy import create_engine
os.environ['NLS_LANG']='SIMPLIFIED CHINESE_CHINA.UTF8'
from sqlalchemy import text

使用cursor方式

python 复制代码
conn = cx_Oracle.connect('user/pw@192.168.18.19:1521/orcl')
cursor=conn.cursor()
cursor.execute("select * from USER ")
cursor.fetchall()[0]

pandas方式

原生连接方式

python 复制代码
df=pd.read_sql("select * from USER where IS_STATUS=:status",conn,params={'status':2})
df

使用sqlalchemy方式

python 复制代码
engine = create_engine("oracle+cx_oracle://user:pw@192.168.18.19:1521/orcl",echo=False)
conn = engine.connect()
df=pd.read_sql_query(text("select * from USER where IS_STATUS=1"),con=conn)
df

碰到的坑

  • 报 'OptionEngine' object has no attribute 'execute'错误
  • 报Not an executable object:

oracle instant-client下载与安装sqlplus
Centos7-安装oracle客户端11.2.0.4
Linux系统安装oracle客户端步骤详解
sqlalchemy+pandas:错误 'OptionEngine' object has no attribute 'execute','str' object has no attribute '_execute_on_connection'

instant-client for linux-x86-64
instant-client for win64

相关推荐
凯瑟琳.奥古斯特26 分钟前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
蒸鱼Yuzheng1 小时前
自动化长任务治理:租约、心跳、孤儿进程与安全回收
自动化测试·python·任务调度·可靠性·分布式系统
2601_962885722 小时前
从 baostock 迁移到 AlphaFeed:接口对照与代码迁移指南
python
isNotNullX2 小时前
智能问数技术路线怎么选?从Text-to-SQL到Data Agent一次讲清
数据库·oracle
AI情绪识别开源2 小时前
检信ALLEMOTION 标定治理与信号质量闸门 · 老年无感认知评估分析器
python
七夜zippoe2 小时前
启元 Q1 腿部运动学逆解:Python 算站立下蹲关节角
开发语言·python·ai·机器人·腿部运动学
第404号工位2 小时前
插上充电宝真能偷光相册?我拆解了一台改装充电宝,实测“恶意充电”的真实攻击链
linux·python·架构
锦衣夜行?3 小时前
Oracle 数据库安装失败清理残留步骤
数据库·oracle
技术卷3 小时前
Windows 下自定义 MCP 踩坑:stdin 默认继承导致 CPython 启动阻塞
python·mcp·zcode
小oo呆3 小时前
【学习心得】Python多进程
python·操作系统