教你如何使用Docker製作Python環境連線Oracle映象

roc_guo 發表於 2022-07-12
Python Docker Oracle

Python連線Oracle本地測試 依賴安裝準備

Python、連結Oracle需要Python依賴和本地Oracle客戶端,測試環境Oracle版本12.1.0.2.0,開發和測試環境為 ,先安裝linux客戶端,選擇zip解壓免安裝版本

Oracle linux客戶端

教你如何使用Docker製作Python環境連線Oracle映象教你如何使用Docker製作Python環境連線Oracle映象

解壓到某個目錄

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 測試

[email protected]:~# 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")<1cx_oracle.cursor > >>> cursor.fetchall() [(1, '張三'), (2, '李四'), (3, '王五')] >>>

製作Docker映象

建立Dockerfile

touch Dockerfile # 將oracle本地客戶端資料夾移動到同一級目錄 cp -r /opt/instantclient_12_1/ ./ Dockerfile
FROM python:3.7 ENV  PIPURL "

映象構建

docker build -t xiaogp/python_oraqcle:v3 .

構建完成

[email protected]:~/docker/PYTHON_ORACLE# docker images REPOSITORY                              TAG                            IMAGE ID            CREATED             SIZE xiaogp/python_oraqcle                    v3                             bb0100d9c3f5        39 seconds ago      1.1GB

啟動映象測試一下

[email protected]:~/docker/PYTHON_ORACLE# docker run -it bb0100d9c3f5 /bin/bash [email protected]:/# 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")<1cx_oracle.cursor > >>> cursor.fetchall() [(1, '張三'), (2, '李四'), (3, '王五')]

可以連結,製作結束


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2905264/,如需轉載,請註明出處,否則將追究法律責任。