DEV Community

Abhilash Kumar | Oracle ACE ♠ for Nabhaas Cloud Consulting

Posted on • Edited on

Python for Oracle - Part 1 : oracledb driver for ARM Linux | Getting Started Essentials

{ Abhilash Kumar Bhattaram : Follow on LinkedIn }


series : Python for ARM Linux - Part 1 : Essentials

NOTE : The blog examples is on ARM Linux but almost the same works for x86 , details in blog below.

Getting Started for Python oracledb driver

Get more done from scripting , a leap for DBA's from schell scripts to Python. Its probably one of the best equipped tools for scripting.

Probably not all shell scripts can be moved, but a lot of stuff can be done in different ways, thats's how one should look at it , Will Python sit on my shell and rule it ? Probably not.

Will Python sit on my shell and rule it ? Probably not<br>

However, while both shell scripting and Python can accomplish automation and database interaction, they do so in fundamentally different ways. Shell scripts are lightweight and well-suited for quick tasks, especially in Unix-based environments where direct command-line interaction is key. On the other hand, Python offers greater structure, readability, cross-platform compatibility, and access to extensive libraries—making it more maintainable and scalable for complex workflows. Understanding the pros and cons of each is crucial: shell scripts may excel in system-level operations, but Python brings enhanced error handling, security features (like encrypted credentials), and the ability to build modular, reusable codebases. The choice depends on the task, environment, and long-term maintainability goals.

Python vs Shell

Lets get started with how to set up our Python for Oracle

Getting Started for Python for Oracle

This is not a Python tutorial but you can understand the flow, there are numerous places to learn python online

One of the pre-requisites and my recommended way to run python is to have our own python environment and not rely on default python installations in root user.

Setting up a Local Pythoon Environment

To start with we need to download the miniconda version of Python , as you can see in my case it is ARM Linux.

You can follow more details for your OS environment here.

[oracle@machine1 py_env]$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh --2025-05-17 11:00:01-- https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700:83b3:2c97:4afd:5:6810:20f1, 104.16.32.241, 104.16.191.158 Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700:83b3:2c97:4afd:5:6810:20f1|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 148575443 (142M) [application/octet-stream] Saving to: ‘Miniconda3-latest-Linux-aarch64.sh’ Miniconda3-latest-Linux-aarch64.sh 100%[===================================================================================================================================================================>] 141.69M 23.5MB/s in 5.6s 2025-05-17 11:00:07 (25.4 MB/s) - ‘Miniconda3-latest-Linux-aarch64.sh’ saved [148575443/148575443] [oracle@machine1 py_env]$ [oracle@machine1 py_env]$ ls -l total 145096 -rw-r--r--. 1 oracle oinstall 148575443 May 1 01:44 Miniconda3-latest-Linux-aarch64.sh 
Enter fullscreen mode Exit fullscreen mode

Setting up Local Environment for Python

I plan to have my python local environment under /opt/oracle/py_miniconda , this is the base of all my python scripts I plan to script further , so we need to get this right.

Installing the Miniconda downloaded above would be as below

[oracle@machine1 py_env]$ ./Miniconda3-latest-Linux-aarch64.sh Welcome to Miniconda3 py313_25.3.1-1 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> MINICONDA END USER LICENSE AGREEMENT Copyright Notice: Miniconda(R) (C) 2015, Anaconda, Inc. All rights reserved. Miniconda(R) is licensed, not sold. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer; 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution; 3. The name Anaconda, Inc. or Miniconda(R) may not be used to endorse or promote products derived from this software without specific prior written permission from Anaconda, Inc.; and 4. Miniconda(R) may not be used to access or allow third parties to access Anaconda package repositories if such use would circumvent paid licensing requirements or is otherwise restricted by the Anaconda Terms of Service. DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ANACONDA "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE , AND NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL ANACONDA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WH ETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF MINICONDA(R), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Do you accept the license terms? [yes|no] >>> yes Miniconda3 will now be installed into this location: /home/oracle/miniconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below [/home/oracle/miniconda3] >>> /opt/oracle/py_miniconda PREFIX=/opt/oracle/py_miniconda Unpacking payload ... entry_point.py:256: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior. entry_point.py:256: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior. Installing base environment... Downloading and Extracting Packages: ## Package Plan ## environment location: /opt/oracle/py_miniconda added / updated specs: - defaults/linux-aarch64::_libgcc_mutex==0.1=main[md5=b272288d02db5520249ca7870c2287b4] - defaults/linux-aarch64::_openmp_mutex==5.1=51_gnu[md5=66329dd81c60123e0d7c4c39b7ee7afe] - defaults/linux-aarch64::anaconda-anon-usage==0.7.0=py313h7d20cce_101[md5=690a2d59076a9b79311ad3c98cb57dde] - defaults/linux-aarch64::annotated-types==0.6.0=py313hd43f75c_0[md5=c67657365f4aca9df3a9390d82618eaa] - defaults/linux-aarch64::boltons==24.1.0=py313hd43f75c_0[md5=864bf796d3dae5b2d7e4fab6ffbc14bc] - defaults/linux-aarch64::brotli-python==1.0.9=py313h419075a_9[md5=8fa8de5f868e7fddd9e27826693ff497] - defaults/linux-aarch64::bzip2==1.0.8=h998d150_6[md5=f580b2013db742598b2d59875bccf774] - defaults/linux-aarch64::c-ares==1.19.1=h998d150_0[md5=17e18b0815f8950ed07e936fbef17788] - defaults/linux-aarch64::ca-certificates==2025.2.25=hd43f75c_0[md5=265553e02ee80946508771a6abceecae] - defaults/linux-aarch64::certifi==2025.4.26=py313hd43f75c_0[md5=76c15f687db867e7eb821fdf569bb920] - defaults/linux-aarch64::cffi==1.17.1=py313hcb1262d_1[md5=5310695471ba6b4719ae05623c5894b6] - defaults/linux-aarch64::conda-anaconda-telemetry==0.1.2=py313hd43f75c_1[md5=6cd15277bf8041fecd31f0ec8bf53603] - defaults/linux-aarch64::conda-anaconda-tos==0.1.3=py313hd43f75c_0[md5=1fe0cdc01d0638561494f73cd3bc19c5] - defaults/linux-aarch64::conda-content-trust==0.2.0=py313hd43f75c_1[md5=cbfb01626f47606690d2195223706ce4] - defaults/linux-aarch64::conda-package-handling==2.4.0=py313hd43f75c_0[md5=2806b16954393af63e9f3fa038b24861] - defaults/linux-aarch64::conda-package-streaming==0.11.0=py313hd43f75c_0[md5=dbaf80eb75824b7611a08bfc5add90ff] - defaults/linux-aarch64::conda==25.3.1=py313hd43f75c_0[md5=6404d1bfe1ec4bf597a38d7df8d1632c] - defaults/linux-aarch64::cpp-expected==1.1.0=hb8fdbf2_0[md5=06c2848c6311674e19391d4b81b3188a] - defaults/linux-aarch64::cryptography==44.0.1=py313h4f760a9_0[md5=2f1112f92a2ffc8b489b3a2cb1f10601] - defaults/linux-aarch64::distro==1.9.0=py313hd43f75c_0[md5=77f95d4b0a5bf1b775dda3372544dbeb] - defaults/linux-aarch64::expat==2.7.1=h419075a_0[md5=4e5b7cdea249a4b761065ea25ce04c72] - defaults/linux-aarch64::fmt==9.1.0=hb8fdbf2_1[md5=563f42f36ed4ba43844a74427fd5391d] - defaults/linux-aarch64::frozendict==2.4.2=py313hd43f75c_0[md5=75d4b249740ef6238bd58dc085cd4630] - defaults/linux-aarch64::icu==73.1=h419075a_0[md5=cb0845107bfb0b019a07516080fd9431] - defaults/linux-aarch64::idna==3.7=py313hd43f75c_0[md5=54e21a371a17c79cbc0230e1f00603d4] - defaults/linux-aarch64::jsonpatch==1.33=py313hd43f75c_1[md5=9930fc2e22ba90d25992765ac140be02] - defaults/linux-aarch64::krb5==1.20.1=h2e2fba8_1[md5=27536cedda98c7b57305647dfed2cd85] - defaults/linux-aarch64::ld_impl_linux-aarch64==2.40=h48e3ba3_0[md5=bd1648897461f56f278fcbdabef1df1a] - defaults/linux-aarch64::libarchive==3.7.7=h4086d46_0[md5=239dce9242b18e26c7617ed46095095b] - defaults/linux-aarch64::libcurl==8.12.1=hd336600_0[md5=0445966d11ce636cac0ffd71ec95c46a] - defaults/linux-aarch64::libedit==3.1.20230828=h998d150_0[md5=cbe50012247d3078f4fd057cc91b526a] - defaults/linux-aarch64::libev==4.33=hfd63f10_1[md5=230e8093b929e64244f2c7e181705802] - defaults/linux-aarch64::libffi==3.4.4=h419075a_1[md5=34c197394030fa553d97fc902585ee9b] - defaults/linux-aarch64::libgcc-ng==11.2.0=h1234567_1[md5=067214d7ddc39f6922b9e29be83fe8f9] - defaults/linux-aarch64::libgomp==11.2.0=h1234567_1[md5=e3d856b632d874d38bfad1083d547271] - defaults/linux-aarch64::libmamba==2.0.5=h78dbd8a_1[md5=55504d30bc3a0ff36c44112c361d0b63] - defaults/linux-aarch64::libmambapy==2.0.5=py313hb8fdbf2_1[md5=6a8459b0b6b852c754a956e459ba58dc] - defaults/linux-aarch64::libmpdec==4.0.0=h998d150_0[md5=8bd7f4c495a81af4914c899949e52542] - defaults/linux-aarch64::libnghttp2==1.57.0=hb788212_0[md5=22c5e58020605770d76b5674c653dd56] - defaults/linux-aarch64::libsolv==0.7.30=h94b7715_1[md5=990cf2b0f00f90cfe06f73569b701ce6] - defaults/linux-aarch64::libssh2==1.11.1=hfa2bbb0_0[md5=a88e620d4eafd7f199a0502433e5e0c0] - defaults/linux-aarch64::libstdcxx-ng==11.2.0=h1234567_1[md5=0230856ae16682fae3cfb828cffd12ec] - defaults/linux-aarch64::libuuid==1.41.5=h998d150_0[md5=59cd225a7659291aa716c6cdae7e1363] - defaults/linux-aarch64::libxml2==2.13.8=h6097fa9_0[md5=7185f18f4c576c5b1d7caeafd688e1a6] - defaults/linux-aarch64::lz4-c==1.9.4=h419075a_1[md5=70c4ab9462183ac4af60852d2a79fbf6] - defaults/linux-aarch64::markdown-it-py==2.2.0=py313hd43f75c_1[md5=29684ee9d5c94ac2da7d6999c6e37da2] - defaults/linux-aarch64::mdurl==0.1.0=py313hd43f75c_0[md5=7be385eec2e9355842787cf2dfdc495d] - defaults/linux-aarch64::menuinst==2.2.0=py313hd43f75c_1[md5=e02481814d5b39989a1e5e1595d9589e] - defaults/linux-aarch64::ncurses==6.4=h419075a_0[md5=b90c355ce67d7aa60ba320b12a892feb] - defaults/linux-aarch64::nlohmann_json==3.11.2=h419075a_0[md5=9e9d478b40d0e254cd3b448f92f47e8c] - defaults/linux-aarch64::openssl==3.0.16=h998d150_0[md5=c979523fd67ef5f6934b43cdd2eed968] - defaults/linux-aarch64::packaging==24.2=py313hd43f75c_0[md5=1fe892fd600b0879c313217d6e75c47b] - defaults/linux-aarch64::pcre2==10.42=hcfaa891_1[md5=540dfb9c2d62a06ce53e6ab920aadaf9] - defaults/linux-aarch64::pip==25.0=py313hd43f75c_0[md5=f5d663e81f50151b6ca4b246951c6241] - defaults/linux-aarch64::platformdirs==4.3.7=py313hd43f75c_0[md5=ed3be289b6bf2ca863d425bd6e281ce3] - defaults/linux-aarch64::pluggy==1.5.0=py313hd43f75c_0[md5=8f0aee9da2819a6775d9275c7bb5a136] - defaults/linux-aarch64::pycosat==0.6.6=py313h998d150_2[md5=574f6176492ab5f26a379307c7377a30] - defaults/linux-aarch64::pydantic-core==2.27.1=py313h657ad5b_0[md5=b484195d78de6c25a6cf286e5eacaf67] - defaults/linux-aarch64::pydantic==2.10.3=py313hd43f75c_0[md5=f4660440c52e70451d809410c02f4ec2] - defaults/linux-aarch64::pygments==2.19.1=py313hd43f75c_0[md5=03e8a86630d438548eed9c49b0516a0b] - defaults/linux-aarch64::pysocks==1.7.1=py313hd43f75c_0[md5=781731092a2ac452348dfd47ade1e237] - defaults/linux-aarch64::python==3.13.2=hc5ec5e8_100_cp313[md5=b56db33cacbc81e476370c0db981c560] - defaults/linux-aarch64::python_abi==3.13=0_cp313[md5=1ca3f5ae7ba5e25a821ce8b4d16010fb] - defaults/linux-aarch64::readline==8.2=h998d150_0[md5=d4048b81dce5581d2bfe6b29e4c54cde] - defaults/linux-aarch64::reproc-cpp==14.2.4=h419075a_2[md5=d4a07ee63f2fded787246f3eb2d2157c] - defaults/linux-aarch64::reproc==14.2.4=h419075a_2[md5=50bf464f48566d71a2778149c54d9fb1] - defaults/linux-aarch64::requests==2.32.3=py313hd43f75c_1[md5=e228ec237df329c689c961ba9a8bfe17] - defaults/linux-aarch64::rich==13.9.4=py313hd43f75c_0[md5=9e1e9aa5aca94b80b115094e7510c628] - defaults/linux-aarch64::ruamel.yaml.clib==0.2.12=py313h998d150_0[md5=0c368b7853d3c5af68cf2659e5e90ade] - defaults/linux-aarch64::ruamel.yaml==0.18.10=py313h998d150_0[md5=350f147cb9420ffa173b28c99ef27a43] - defaults/linux-aarch64::setuptools==78.1.1=py313hd43f75c_0[md5=9e2293d90ff03fcbf77b73f446d659cf] - defaults/linux-aarch64::simdjson==3.10.1=hb8fdbf2_0[md5=0cefa22396b339a17597faad550d9582] - defaults/linux-aarch64::spdlog==1.11.0=hb8fdbf2_0[md5=8eac4ac640ff0f314308603b26ebf1ad] - defaults/linux-aarch64::sqlite==3.45.3=h998d150_0[md5=a760da65a886c78c80a7d5a04850204a] - defaults/linux-aarch64::tk==8.6.14=h987d8db_0[md5=a8b37241af55b4f6fe13cfbe995b7243] - defaults/linux-aarch64::tqdm==4.67.1=py313had16b7f_0[md5=17af5784f63a3c6e136b4e173bde276c] - defaults/linux-aarch64::truststore==0.10.0=py313hd43f75c_0[md5=015c81183b1e8577bf44083759d27350] - defaults/linux-aarch64::typing-extensions==4.12.2=py313hd43f75c_0[md5=4cf2bd7d8853f57ce1f41aa812c12ce2] - defaults/linux-aarch64::typing_extensions==4.12.2=py313hd43f75c_0[md5=08d9cc1aeb7bf56c174a6e8239fee6b4] - defaults/linux-aarch64::urllib3==2.3.0=py313hd43f75c_0[md5=608d686e3f27db71ad1e77d2cde6c68c] - defaults/linux-aarch64::wheel==0.45.1=py313hd43f75c_0[md5=22ae5c29bea42f20aa14b036c35c3e2d] - defaults/linux-aarch64::xz==5.6.4=h998d150_1[md5=f24eba0df128871df1e71b7bb2df9868] - defaults/linux-aarch64::yaml-cpp==0.8.0=h419075a_1[md5=51a2369fb0d068241603303f704835db] - defaults/linux-aarch64::zlib==1.2.13=h998d150_1[md5=84a6ab827186041b20714003e93bb6f6] - defaults/linux-aarch64::zstandard==0.23.0=py313hc476304_1[md5=522937fc2bbf781292dbf9b64fcaa6c6] - defaults/linux-aarch64::zstd==1.5.6=h6a09583_0[md5=00680255e8afd0104fab157da58b8f35] - defaults/noarch::archspec==0.2.3=pyhd3eb1b0_0[md5=13d01ee2d343d8539bb47055a6c0b5b2] - defaults/noarch::charset-normalizer==3.3.2=pyhd3eb1b0_0[md5=c6fea3691e85cf7f568b0618ec29fc4f] - defaults/noarch::conda-libmamba-solver==25.4.0=pyhd3eb1b0_0[md5=77ff27567894c7ea3eb908489e5d3e5c] - defaults/noarch::jsonpointer==2.1=pyhd3eb1b0_0[md5=298ff809e733cb04366e4e629c65aa8d] - defaults/noarch::pybind11-abi==5=hd3eb1b0_0[md5=7f0df6639fdf60ccd3045ee6faedd32f] - defaults/noarch::pycparser==2.21=pyhd3eb1b0_0[md5=135a72ff2a31150a3a3ff0b1edd41ca9] - defaults/noarch::tzdata==2025a=h04d1e81_0[md5=885caf42f821b98b3321dc4108511a3d] The following NEW packages will be INSTALLED: _libgcc_mutex pkgs/main/linux-aarch64::_libgcc_mutex-0.1-main _openmp_mutex pkgs/main/linux-aarch64::_openmp_mutex-5.1-51_gnu anaconda-anon-usa~ pkgs/main/linux-aarch64::anaconda-anon-usage-0.7.0-py313h7d20cce_101 annotated-types pkgs/main/linux-aarch64::annotated-types-0.6.0-py313hd43f75c_0 archspec pkgs/main/noarch::archspec-0.2.3-pyhd3eb1b0_0 boltons pkgs/main/linux-aarch64::boltons-24.1.0-py313hd43f75c_0 brotli-python pkgs/main/linux-aarch64::brotli-python-1.0.9-py313h419075a_9 bzip2 pkgs/main/linux-aarch64::bzip2-1.0.8-h998d150_6 c-ares pkgs/main/linux-aarch64::c-ares-1.19.1-h998d150_0 ca-certificates pkgs/main/linux-aarch64::ca-certificates-2025.2.25-hd43f75c_0 certifi pkgs/main/linux-aarch64::certifi-2025.4.26-py313hd43f75c_0 cffi pkgs/main/linux-aarch64::cffi-1.17.1-py313hcb1262d_1 charset-normalizer pkgs/main/noarch::charset-normalizer-3.3.2-pyhd3eb1b0_0 conda pkgs/main/linux-aarch64::conda-25.3.1-py313hd43f75c_0 conda-anaconda-te~ pkgs/main/linux-aarch64::conda-anaconda-telemetry-0.1.2-py313hd43f75c_1 conda-anaconda-tos pkgs/main/linux-aarch64::conda-anaconda-tos-0.1.3-py313hd43f75c_0 conda-content-tru~ pkgs/main/linux-aarch64::conda-content-trust-0.2.0-py313hd43f75c_1 conda-libmamba-so~ pkgs/main/noarch::conda-libmamba-solver-25.4.0-pyhd3eb1b0_0 conda-package-han~ pkgs/main/linux-aarch64::conda-package-handling-2.4.0-py313hd43f75c_0 conda-package-str~ pkgs/main/linux-aarch64::conda-package-streaming-0.11.0-py313hd43f75c_0 cpp-expected pkgs/main/linux-aarch64::cpp-expected-1.1.0-hb8fdbf2_0 cryptography pkgs/main/linux-aarch64::cryptography-44.0.1-py313h4f760a9_0 distro pkgs/main/linux-aarch64::distro-1.9.0-py313hd43f75c_0 expat pkgs/main/linux-aarch64::expat-2.7.1-h419075a_0 fmt pkgs/main/linux-aarch64::fmt-9.1.0-hb8fdbf2_1 frozendict pkgs/main/linux-aarch64::frozendict-2.4.2-py313hd43f75c_0 icu pkgs/main/linux-aarch64::icu-73.1-h419075a_0 idna pkgs/main/linux-aarch64::idna-3.7-py313hd43f75c_0 jsonpatch pkgs/main/linux-aarch64::jsonpatch-1.33-py313hd43f75c_1 jsonpointer pkgs/main/noarch::jsonpointer-2.1-pyhd3eb1b0_0 krb5 pkgs/main/linux-aarch64::krb5-1.20.1-h2e2fba8_1 ld_impl_linux-aar~ pkgs/main/linux-aarch64::ld_impl_linux-aarch64-2.40-h48e3ba3_0 libarchive pkgs/main/linux-aarch64::libarchive-3.7.7-h4086d46_0 libcurl pkgs/main/linux-aarch64::libcurl-8.12.1-hd336600_0 libedit pkgs/main/linux-aarch64::libedit-3.1.20230828-h998d150_0 libev pkgs/main/linux-aarch64::libev-4.33-hfd63f10_1 libffi pkgs/main/linux-aarch64::libffi-3.4.4-h419075a_1 libgcc-ng pkgs/main/linux-aarch64::libgcc-ng-11.2.0-h1234567_1 libgomp pkgs/main/linux-aarch64::libgomp-11.2.0-h1234567_1 libmamba pkgs/main/linux-aarch64::libmamba-2.0.5-h78dbd8a_1 libmambapy pkgs/main/linux-aarch64::libmambapy-2.0.5-py313hb8fdbf2_1 libmpdec pkgs/main/linux-aarch64::libmpdec-4.0.0-h998d150_0 libnghttp2 pkgs/main/linux-aarch64::libnghttp2-1.57.0-hb788212_0 libsolv pkgs/main/linux-aarch64::libsolv-0.7.30-h94b7715_1 libssh2 pkgs/main/linux-aarch64::libssh2-1.11.1-hfa2bbb0_0 libstdcxx-ng pkgs/main/linux-aarch64::libstdcxx-ng-11.2.0-h1234567_1 libuuid pkgs/main/linux-aarch64::libuuid-1.41.5-h998d150_0 libxml2 pkgs/main/linux-aarch64::libxml2-2.13.8-h6097fa9_0 lz4-c pkgs/main/linux-aarch64::lz4-c-1.9.4-h419075a_1 markdown-it-py pkgs/main/linux-aarch64::markdown-it-py-2.2.0-py313hd43f75c_1 mdurl pkgs/main/linux-aarch64::mdurl-0.1.0-py313hd43f75c_0 menuinst pkgs/main/linux-aarch64::menuinst-2.2.0-py313hd43f75c_1 ncurses pkgs/main/linux-aarch64::ncurses-6.4-h419075a_0 nlohmann_json pkgs/main/linux-aarch64::nlohmann_json-3.11.2-h419075a_0 openssl pkgs/main/linux-aarch64::openssl-3.0.16-h998d150_0 packaging pkgs/main/linux-aarch64::packaging-24.2-py313hd43f75c_0 pcre2 pkgs/main/linux-aarch64::pcre2-10.42-hcfaa891_1 pip pkgs/main/linux-aarch64::pip-25.0-py313hd43f75c_0 platformdirs pkgs/main/linux-aarch64::platformdirs-4.3.7-py313hd43f75c_0 pluggy pkgs/main/linux-aarch64::pluggy-1.5.0-py313hd43f75c_0 pybind11-abi pkgs/main/noarch::pybind11-abi-5-hd3eb1b0_0 pycosat pkgs/main/linux-aarch64::pycosat-0.6.6-py313h998d150_2 pycparser pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0 pydantic pkgs/main/linux-aarch64::pydantic-2.10.3-py313hd43f75c_0 pydantic-core pkgs/main/linux-aarch64::pydantic-core-2.27.1-py313h657ad5b_0 pygments pkgs/main/linux-aarch64::pygments-2.19.1-py313hd43f75c_0 pysocks pkgs/main/linux-aarch64::pysocks-1.7.1-py313hd43f75c_0 python pkgs/main/linux-aarch64::python-3.13.2-hc5ec5e8_100_cp313 python_abi pkgs/main/linux-aarch64::python_abi-3.13-0_cp313 readline pkgs/main/linux-aarch64::readline-8.2-h998d150_0 reproc pkgs/main/linux-aarch64::reproc-14.2.4-h419075a_2 reproc-cpp pkgs/main/linux-aarch64::reproc-cpp-14.2.4-h419075a_2 requests pkgs/main/linux-aarch64::requests-2.32.3-py313hd43f75c_1 rich pkgs/main/linux-aarch64::rich-13.9.4-py313hd43f75c_0 ruamel.yaml pkgs/main/linux-aarch64::ruamel.yaml-0.18.10-py313h998d150_0 ruamel.yaml.clib pkgs/main/linux-aarch64::ruamel.yaml.clib-0.2.12-py313h998d150_0 setuptools pkgs/main/linux-aarch64::setuptools-78.1.1-py313hd43f75c_0 simdjson pkgs/main/linux-aarch64::simdjson-3.10.1-hb8fdbf2_0 spdlog pkgs/main/linux-aarch64::spdlog-1.11.0-hb8fdbf2_0 sqlite pkgs/main/linux-aarch64::sqlite-3.45.3-h998d150_0 tk pkgs/main/linux-aarch64::tk-8.6.14-h987d8db_0 tqdm pkgs/main/linux-aarch64::tqdm-4.67.1-py313had16b7f_0 truststore pkgs/main/linux-aarch64::truststore-0.10.0-py313hd43f75c_0 typing-extensions pkgs/main/linux-aarch64::typing-extensions-4.12.2-py313hd43f75c_0 typing_extensions pkgs/main/linux-aarch64::typing_extensions-4.12.2-py313hd43f75c_0 tzdata pkgs/main/noarch::tzdata-2025a-h04d1e81_0 urllib3 pkgs/main/linux-aarch64::urllib3-2.3.0-py313hd43f75c_0 wheel pkgs/main/linux-aarch64::wheel-0.45.1-py313hd43f75c_0 xz pkgs/main/linux-aarch64::xz-5.6.4-h998d150_1 yaml-cpp pkgs/main/linux-aarch64::yaml-cpp-0.8.0-h419075a_1 zlib pkgs/main/linux-aarch64::zlib-1.2.13-h998d150_1 zstandard pkgs/main/linux-aarch64::zstandard-0.23.0-py313hc476304_1 zstd pkgs/main/linux-aarch64::zstd-1.5.6-h6a09583_0 Downloading and Extracting Packages: Preparing transaction: done Executing transaction: done entry_point.py:256: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior. installation finished. Do you wish to update your shell profile to automatically initialize conda? This will activate conda on startup and change the command prompt when activated. If you'd prefer that conda's base environment not be activated on startup, run the following command when conda is activated: conda config --set auto_activate_base false You can undo this by running `conda init --reverse $SHELL`? [yes|no] [no] >>> yes no change /opt/oracle/py_miniconda/condabin/conda no change /opt/oracle/py_miniconda/bin/conda no change /opt/oracle/py_miniconda/bin/conda-env no change /opt/oracle/py_miniconda/bin/activate no change /opt/oracle/py_miniconda/bin/deactivate no change /opt/oracle/py_miniconda/etc/profile.d/conda.sh no change /opt/oracle/py_miniconda/etc/fish/conf.d/conda.fish no change /opt/oracle/py_miniconda/shell/condabin/Conda.psm1 no change /opt/oracle/py_miniconda/shell/condabin/conda-hook.ps1 no change /opt/oracle/py_miniconda/lib/python3.13/site-packages/xontrib/conda.xsh no change /opt/oracle/py_miniconda/etc/profile.d/conda.csh modified /home/oracle/.bashrc ==> For changes to take effect, close and re-open your current shell. <== Thank you for installing Miniconda3! [oracle@machine1 py_env]$ 
Enter fullscreen mode Exit fullscreen mode

Verifying Python Installation [ root vs Local ]

The one below is the root default , I prefer not to touch it

[oracle@machine1 py_env]$ /usr/bin/python3 --version Python 3.6.8 <<<<<<<<<<<---- This is the root python 
Enter fullscreen mode Exit fullscreen mode

The one below is the local environment this is where we will work as I need my Python scripts to be transportable and not dependant on root.

base) [oracle@machine1 ~]$ conda list env # packages in environment at /opt/oracle/py_miniconda: # # Name Version Build Channel (base) [oracle@machine1 ~]$ which python /opt/oracle/py_miniconda/bin/python (base) [oracle@machine1 ~]$ python --version Python 3.13.2 (base) [oracle@machine1 ~]$ 
Enter fullscreen mode Exit fullscreen mode

Activating the installed conda environment , for now I will use the default base conda.

 (base) [oracle@machine1 ~]$ which conda conda () { \local cmd="${1-__missing__}"; case "$cmd" in activate | deactivate) __conda_activate "$@" ;; install | update | upgrade | remove | uninstall) __conda_exe "$@" || \return; __conda_activate reactivate ;; *) __conda_exe "$@" ;; esac } (base) [oracle@machine1 ~]$ conda env list # conda environments: # base * /opt/oracle/py_miniconda (base) [oracle@machine1 ~]$ conda activate base (base) [oracle@machine1 ~]$ which python /opt/oracle/py_miniconda/bin/python (base) [oracle@machine1 ~]$ python --version Python 3.13.2 (base) [oracle@machine1 ~]$ 
Enter fullscreen mode Exit fullscreen mode

Installing Oracle related modules

I would be using the following modules oracledb & tabulate , these two are sufficient for me to set my python environment for scripting.

(base) [oracle@machine1 ~]$ pip install oracledb Collecting oracledb Downloading oracledb-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.metadata (5.4 kB) Requirement already satisfied: cryptography>=3.2.1 in /opt/oracle/py_miniconda/lib/python3.13/site-packages (from oracledb) (44.0.1) Requirement already satisfied: cffi>=1.12 in /opt/oracle/py_miniconda/lib/python3.13/site-packages (from cryptography>=3.2.1->oracledb) (1.17.1) Requirement already satisfied: pycparser in /opt/oracle/py_miniconda/lib/python3.13/site-packages (from cffi>=1.12->cryptography>=3.2.1->oracledb) (2.21) Downloading oracledb-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 23.5 MB/s eta 0:00:00 Installing collected packages: oracledb Successfully installed oracledb-3.1.1 (base) [oracle@machine1 ~]$ 
Enter fullscreen mode Exit fullscreen mode

More in my next post on Python for Oracle

Top comments (0)