
আগের লেখায় আমরা আবহাওয়ার তথ্য কেবল স্ক্রিনে প্রিন্ট করেছিলাম। এবারে সেটি ডেটাবেজে সংরক্ষণ করার ব্যবস্থা করবো। ডেটাবেজ হিসেবে এসকিউলাইট ব্যবহার করা হবে। ডেটাবেজ নিয়ে যাদের কোনো ধারণা নেই, তারা আমার এসকিউলাইট পরিচিতি ভিডিও সিরিজ দেখে নিলে সুবিধা হবে।
আমরা পাইথন প্রোগ্রাম থেকেই temperature নামে একটি টেবিল তৈরি করবো। এই টেবিলের প্রথম কলাম হবে একটি id নামক একটি ইন্টিজার। এটিকে আমরা প্রাইমারি কি, নট নাল এবং অটো-ইনক্রিমেন্ট হিসেবে উল্লেখ করে দিবো। যারা এই কথাটির অর্থ বুঝতে পারে নাই, তাদের চিন্তার কিছু নাই। এই কথার অর্থ না বুঝলেও লেখাটি পড়তে ও প্রোগ্রাম করতে কোনো সমস্যা হবে না। টেবিলে আমরা তাপমাত্রা ও বাতাসের আর্দ্রতা ছাড়াও তারিখ ও সময় সংরক্ষণ করব।
পাইথন দিয়ে কিভাবে এসকিউলাইট ব্যবহার করতে হয়, সেটি জানা যাবে এখানে – https://docs.python.org/3/library/sqlite3.html। এখন টেবিল তৈরি করার জন্য আমরা এই কোড ব্যবহার করতে পারি –
import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS temperature (id INTEGER PRIMARY KEY AUTOINCREMENT, temp REAL, humidity REAL, datetime TEXT)''')
আর বর্তমান তারিখ ও সময় বের করার জন্য এরকম কোড লিখব –
import datetime current_time = datetime.datetime.now()
তাহলে আমার পুরো প্রোগ্রামটি দাঁড়াবে এরকম –
import requests import json import sqlite3 import datetime conn = sqlite3.connect('example.db') c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS temperature (id INTEGER PRIMARY KEY AUTOINCREMENT, temp REAL, humidity REAL, datetime TEXT)''') BASE_URL = "http://api.openweathermap.org/data/2.5/weather" payload = {"id": "1337179", "APPID": "your api key"} r = requests.get(BASE_URL, params=payload) result = r.json() temperature = result["main"]["temp"] humidity = result["main"]["humidity"] current_time = datetime.datetime.now() c.execute('INSERT INTO temperature (temp, humidity, datetime) VALUES(?, ?, ?)', (temperature, humidity, current_time)) conn.commit() conn.close()
এখন ওপরের প্রোগ্রামটি রান করলে ডেটাবেজে তাপমাত্রার তথ্য সংরক্ষিত হবে। আমরা টার্মিনাল থেকে বিষয়টি পরীক্ষা করতে পারি। যেই ফোল্ডার বা ডিরেক্টরি থেকে আমরা weather_info.py ফাইলটি রান করেছি, টার্মিনাল থেকে সেখানে গিয়ে আমরা এসকিউলাইট চালু করে তারপর টেবিলের ডেটা দেখতে পারি।
$ sqlite3 example.db SQLite version 3.24.0 2018-06-04 14:10:15 Enter ".help" for usage hints. sqlite> select * from temperature; 1|292.18|56.0|2019-07-29 23:35:32.797251
আমার কম্পিউটারে প্রোগ্রামটি ঠিকঠাক রান করেছে এবং ডেটাবেজেও ডেটা সংরক্ষিত হয়েছে। আশা করি, প্রোগ্রামটি লিখতে পেরে অনেকেই আনন্দিত হয়েছে। কিন্তু আমি যদি চাকরির ইন্টারভিউতে কাউকে এই কাজটি করতে দিই, এবং সে এরকম কোড লিখে, তাহলে তাকে আমি ইন্টারভিউতে পাশ করাব না। তাহলে কিরকম কোড লিখতে হবে? আলোচনা করব পরবর্তী পর্বে।