共计 2235 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 这篇文章主要为大家介绍了使用 Docker 制作 Python 环境连接 Oracle 镜像示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 |
Python 连接 Oracle 本地测试
依赖安装准备
Python、链接 Oracle 需要 Python 依赖和本地 Oracle 客户端,测试环境 Oracle 版本 12.1.0.2.0,开发和测试环境为 linux,先安装 linux 客户端,选择 zip 解压免安装版本
Oracle linux 客户端
解压到某个目录
unzip instantclient-basic-linux.x64-12.1.0.2.0.zip
解压后新建 /network/admin 文件夹
cd /opt/instantclient_12_1/
mkdir -p /network/admin
修改 root 用户的环境变量
vim /etc/profile
export ORACLE_HOME=/opt/instantclient_12_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
source /etc/profile
下一步安装 Python 依赖
pip install cx_Oracle
Python 脚本测试
root@ubuntu:~# python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle as cx
>>> con = cx.connect('username', 'password', 'xxx.xxx.xxx.xxx:1521/ORCL')
>>> cursor = con.cursor()
>>> cursor.execute("select * from emp")
>
>>> cursor.fetchall()
[(1, '张三'), (2, '李四'), (3, '王五')]
>>>
制作 Docker 镜像
创建 Dockerfile
touch Dockerfile
# 将 oracle 本地客户端文件夹移动到同一级目录
cp -r /opt/instantclient_12_1/ ./
Dockerfile
FROM python:3.7
ENV PIPURL "https://mirrors.aliyun.com/pypi/simple/"
RUN pip install cx_Oracle
--default-timeout=1000
COPY instantclient_12_1 /opt/instantclient_12_1
ENV ORACLE_HOME=/opt/instantclient_12_1
ENV TNS_ADMIN=$ORACLE_HOME/network/admin
ENV NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
ENV NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
ENV LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
ENV PATH=$ORACLE_HOME:$PATH
RUN apt-get update
RUN apt-get install -y libaio1
镜像构建
docker build -t xiaogp/python_oraqcle:v3 .
构建完成
root@ubuntu:~/docker/PYTHON_ORACLE# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaogp/python_oraqcle v3 bb0100d9c3f5 39 seconds ago 1.1GB
启动镜像测试一下
root@ubuntu:~/docker/PYTHON_ORACLE# docker run -it bb0100d9c3f5 /bin/bash
root@fbff875ba4d5:/# python
Python 3.7.9 (default, Jan 12 2021, 17:26:22)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle as cx
>>> con = cx.connect('username', 'password', 'xxx.xxx.xxx.xxx:1521/ORCL')
>>> cursor = con.cursor()
>>> cursor.execute("select * from emp")
>
>>> cursor.fetchall()
[(1, '张三'), (2, '李四'), (3, '王五')]
可以链接,制作结束
正文完
星哥玩云-微信公众号