DEV Community

Abhilash Kumar | Oracle ACE ♠ for Nabhaas Cloud Consulting

Posted on • Edited on

1

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

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

Tiger Data image

🐯 🚀 Timescale is now TigerData: Building the Modern PostgreSQL for the Analytical and Agentic Era

We’ve quietly evolved from a time-series database into the modern PostgreSQL for today’s and tomorrow’s computing, built for performance, scale, and the agentic future.

So we’re changing our name: from Timescale to TigerData. Not to change who we are, but to reflect who we’ve become. TigerData is bold, fast, and built to power the next era of software.

Read more

👋 Kindness is contagious

Discover this thought-provoking article in the thriving DEV Community. Developers of every background are encouraged to jump in, share expertise, and uplift our collective knowledge.

A simple "thank you" can make someone's day—drop your kudos in the comments!

On DEV, spreading insights lights the path forward and bonds us. If you appreciated this write-up, a brief note of appreciation to the author speaks volumes.

Get Started