পাইথন একটি শক্তিশালী প্রোগ্রামিং ল্যাংগুয়েজ। টেকনলজির সব যায়গায় পাইথনের আধিপত্য লক্ষ্য করা যায়। ওরাকলের CX_ORACLE ড্রাইভার দিয়ে পাইথন অ্যাপ্লিকেশন থেকে ওরাকল ডাটাবেজে এক্সেস করা যায়।

আমি কয়েকটি লেখায় দেখাব কিভাবে পাইথন দিয়ে ওরাকল ডাটাবেজে কানেক্ট, ইনসার্ট, উপডেট, ডিলিট ও অন্যান্য ডিএমএল, ডিডিএল ওপারেশন চালানো যায়। চলুন শুরু করা যাক -

ডাটাবেজ সেটাপঃ

পাইথন দিয়ে CRUD অপারেশনের জন্য় আমরা নিচের টেবিল ব্যাবহার করব -

CREATE TABLE cx_people (
 id NUMBER GENERATED BY DEFAULT AS identity,
 name VARCHAR2(20),
 age NUMBER,
 notes VARCHAR2(100),
 CONSTRAINT PK_CX_PEOPLE PRIMARY KEY ("ID")
)
/

পাইথন সেটাপঃ

ধরে নিচ্ছি আপনার কম্পিউটারে পাইথন সেটাপ করা আছে। এখন নিচের কমান্ড দিয়ে Cx_Oracle ইন্সটল করে নিন। বিস্তারিত দেখুন এখানে
python -m pip install cx_Oracle --upgrade

আশা করি সফল ভাবে ইন্সটল করতে পেরেছেন।

ওরাকল ডাটাবেজে সংযোগ স্থাপনঃ

নিচের ধাপগুলো অনুসরন করে সংযোগ স্থাপন করুন -

  1. import cx_Oracle
  2. import os
  3. connectString = os.getenv('db_connect')
  4. con = cx_Oracle.connect(connectString)

এখানে আমি সিকিউরিটির জন্য কানেক্ট ট্রিংকে ওপারেটিং সিস্টেমের environment variable-এ সেট করে রেখেছি। আপনি চাইলে সরাসরি কানেক্ট ট্রিং দিয়ে কানেক্ট করতে পারেন। কানেক্ট ট্রিং এর উদাহরন - ("username","password","hostname/database SID")

ওরাকল ডাটাবেজে ডাটা ইনসার্টঃ

এই সেকশনে আমি দেখাবো পাইথন দিয়ে কিভাবে ডাটাবেজে ডাটা ইনসার্ট করে। যেকোনো ডাটাবেজ অপারেশন চালানর জন্য আগে কারসর অবজেক্ট তৈরি করতে হবে। কারসর অবজেক্ট দিয়ে আমরা যেকোনো SQL এবং PL/SQL স্টেটমেন্ট রান করতে পারব। নিচের উদাহরন টা দেখুন -

import cx_Oracle
import os
connectString = os.getenv('db_connect')
con = cx_Oracle.connect(connectString)
cur = con.cursor()

# Insert single row
statement = 'insert into cx_people(id, name, age, notes) values (:1, :2, :3, :4)'
cur.execute(statement, (1, 'Cheryl', 41, 'I like monkeys'))
cur.execute(statement, (2, 'Rob', 37, 'I like snakes'))
con.commit()

# Insert multiple rows
rows = [(1, 'Bob', 35, 'I like dogs'), (2, 'Kim', 27, 'I like birds')]
cur.bindarraysize = 2
cur.setinputsizes(int, 20, int, 100)
cur.executemany("insert into cx_people(id, name, age, notes) values (:1, :2, :3, :4)", rows)
con.commit()

bindarraysize দিয়ে লিস্টে কতগুলো রো আছে তা বুঝানো হয়েছে। setinputsizes কল করা হয় execute(), callfunc() এবং callproc() মেথড এর আগে। প্যারামিটার (int, 20, int, 100) দিয়ে ইনপুট টাইপ এবং স্টিং এর লেংথ বুঝানো হয়েছে।

ইনসার্টের পর ডাটা রিটার্ন করাঃ নিচের উদাহরণটি দেখুন -

new_id = cur.var(cx_Oracle.NUMBER)
new_name = cur.var(cx_Oracle.STRING)

statement = 'insert into cx_people(id, name, age, notes) 
              values (:1, :2, :3, :4) 
              returning id, name into :5, :6'
cur.execute(statement, ('Sandy', 31, 'I like horses',
                         new_id, new_name))

sandy_id = new_id.getvalue()
sandy_name = new_name.getvalue()

con.commit()

print('Our new id is: ' + str(sandy_id).rstrip('.0') + 
'name: ' + str(sandy_name))

এখানে প্রথমে new_id এবং new_name নামে দুইটা ভ্যরিয়েবল ডিক্লেয়ার করা হয়েছে। যার ডাটা টাইপ Cx_Oracle DB API-এর স্পশাল টাইপ এবং এখানে রিটার্ন ভ্যালু স্টোর করা হয়েছে, সবশেষে রিটার্ন ভ্যালু প্রিন্ট করে দেখিয়েছি।

পরবর্তি লেখায় আমি দেখাবো ডাটা কুয়েরি করা, সে পর্যন্ত আল্লাহ হাফেজ।