MySQL সবচেয়ে জনপ্রিয় ওপেন-সোর্স ডেটাবেস। Python-এ PyMySQL লাইব্রেরি ব্যবহার করে MySQL-এ কানেক্ট, রিড, রাইট করা যায়।
PyMySQL ইনস্টলেশন
# pip ব্যবহার করে pip install pymysql # Anaconda ব্যবহার করে conda install -c anaconda pymysql # IDE থেকে (PyCharm, VS Code ইত্যাদি) প্যাকেজ ম্যানেজার দিয়ে
MySQL-এ কানেকশন এবং ভার্সন চেক
import pymysql
# ডেটাবেস কানেকশন
db = pymysql.connect(
host="localhost",
user="testuser",
password="test123",
database="TESTDB"
)
# কার্সর অবজেক্ট
cursor = db.cursor()
# SQL এক্সিকিউট
cursor.execute("SELECT VERSION()")
# ফলাফল ফেচ
data = cursor.fetchone()
print("Database version: %s" % data)
# কানেকশন বন্ধ
db.close()
আউটপুট:
Database version: 8.0.19
SQL কোয়েরি এক্সিকিউট এবং রেজাল্ট প্রসেস
import pymysql
db = pymysql.connect("localhost", "username", "paswd", "DBname")
cursor = db.cursor()
sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s" % (1000)
try:
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
fname, lname, age, sex, income = row
print("fname=%s, lname=%s, age=%d, sex=%s, income=%d" %
(fname, lname, age, sex, income))
except Exception as e:
print("Error: unable to fetch data -", e)
finally:
db.close()
আউটপুট:
fname=Jack, lname=Ma, age=31, sex=M, income=12000
সেরা অভ্যাস (Best Practices)
- Parameterized Query:
cursor.execute("SELECT * FROM t WHERE id=%s", (id_val,))— SQL ইনজেকশন প্রতিরোধ। - Context Manager:
with pymysql.connect(...) as db:— অটো ক্লোজ। - Connection Pooling: প্রোডাকশনে
DBUtils.PooledDBবাSQLAlchemyব্যবহার করুন। - Error Handling: ספেসফিক এক্সেপশন ক্যাচ করুন (
pymysql.Error)। - DictCursor:
cursor = db.cursor(pymysql.cursors.DictCursor)— ডিকশনারি রিটার্ন করে।