آیا میدانید پایتون دارای یک پایگاهدادهی داخلی است؟
معرفی کتابخانهی داخلی پایتون- sqlite3
اعتقاد من بر این است که اگر شما یک توسعه دهندهی نرمافزار هستید، پس قطعا باید پایگاهدادهی بسیار سبک وزنِ SQLite را بشناسید یا حتی شاید از آن استفاده کرده باشید. این پایگاهداده، بهعنوان یک پایگاهدادهی رابطهای، تقریباً تمام ویژگیهای موردنیاز شما را دارد؛ اما در اینجا همهچیز در قالب یک فایل ذخیره میشود. در سایت رسمی پایتون، چندین سناریو برای استفاده از SQLite وجود دارد.
· دستگاههای تعبیه شده و اینترنت اشیاء
· تحلیل دادهها
· انتقال دادهها
· بایگانی فایل و یا نگهداری دادهها
· پایگاهدادههای داخلی یا موقتی
· یک جایگزین برای پایگاهدادهی سازمانی در زمان نمایش یا آزمایش
· آموزش، تعلیم و آزمایش
· افزونههای آزمایشی زبان SQL
برای آنکه شما بخواهید از SQLite استفاده کنید، دلایل بیشتری نیز وجود دارد؛ لطفاً اسناد موجود در آدرس زیر را بررسی کنید:
https://www.sqlite.org/whentouse.html
مهمترین دلیل برای استفاده از SQLite این است که در واقع این پایگاهداده بهعنوان یک کتابخانهدر پایتون ساخته شده است. به عبارت دیگر، شما برای استفاده از SQLite نیازی به نصب هیچ نرمافزاری ندارید؛ نه در سمت سرویس دهنده و نه در سمت سرویس گیرنده. تا زمانیکه شما این کتابخانه را در پایتون وارد نکرده و کدنویسی را آغاز نکردهاید، نیازی نیست که هیچ سرویسی را در حال اجرا نگه دارید؛ پس میتوان گفت که شما یک سیستم مدیریت پایگاهدادهی رابطهای دارید!
وارد کردن کتابخانه و استفاده از آن
زمانیکه ما میگوییم SQLite بهعنوان یک پایگاهدادهی داخلی و در داخل پایتون تعبیه شده است، منظورمان این است که برای استفاده از این کتابخانه، نیازی به اجرای دستور pip install نیست.
ایجاد یک اتصال به پایگاهداده
با استفاده از درایورها، رشتههای اتصال و غیره خودتان را به زحمت نیندازید. شما میتوانید یک پایگاهدادهی SQLite را ایجاد کرده و یک شیء اتصال داشته باشید؛ به همین سادگی:
بعد از اجرای این کدِ یک خطی، ما یک پایگاهداده را ایجاد کرده و البته بهطور پیشفرض به آن متصل هستیم. دلیل اینکه ما بهطور پیشفرض به این پایگاهداده متصل هستیم، این است که پایگاهدادهای که ما از پایتون خواستیم تا ما را به آن متصل کند، از قبل وجود نداشته است؛ ولی پایتون بهطور خودکار یک پایگاهدادهی خالی را ایجاد کرده و ما را به آن متصل میکند. اما اگر بخواهیم به پایگاهدادهای که از قبل وجود دارد متصل شویم، باز هم دقیقاً باید از همین کد استفاده کنیم.
ایجاد یک جدول
اکنون بیایید یک جدول را ایجاد کنیم.
ما به این جدول که «USER» نام دارد، سه ستون اضافه کردهایم. همانطور که مشاهده میکنیم، علیرغم اینکه SQLite در واقع یک پایگاهدادهی سبک وزن است، اما از تمام ویژگیهای اساسی موجود در یک سیستم معمولیِ مدیریت پایگاهدادهرابطهای (RDBMS) پشتیبانی میکند؛ ویژگیهایی از قبیل: نوع داده، قابلیت خالی بودن فیلد(nullable)، کلید اصلی و افزایش خودکار(auto-increment).
پس از اجرای این کد، جدول ما نیز ایجاد میشود؛ اگرچه خروجی ندارد.
ورود رکوردها به جدول
اکنون بیابید تعدادی رکورد در جدول USER که به تازگی آنرا ایجاد کردهایم، وارد کنیم؛ البته میتوان اثبات کرد که ما واقعاً این جدول را خودمان ایجاد کردهایم.
فرض کنید که ما میخواهیم چندین فیلد را با یک کد به جدول وارد کنیم. SQLite در پایتون، به راحتی میتواند به این کار مهم را انجام دهد.
در اینجا ما باید دستور SQL را به گونهای تعریف کنیم که در آن به جای مقادیر دادهها از علامت سوال استفاده شود. سپس، در ادامهی دستور، تعدادی دادهی نمونه برای درج در جدول قرار میدهیم. ما با استفاده از شیء اتصال میتوانیم این ردیفها را در جدول درج کنیم.
پرسوجو از جدول
اکنون، زمان آن رسیده است که تمام کارهایی که انجام دادهایم را به روشی ملموس بررسی کنیم. بیایید پرسو جویی(منظورQuery است) در جدول انجام دهیم و ردیفهایی را بهعنوان خروجی دریافت کنیم.
لازم به ذکر است که اگر چه SQLite یک پایگاهدادهی سبک وزن است، اما بهعنوان یک پایگاهدادهی بسیار پرکاربرد محسوب میشود و اکثر نرمافزارهای سرویس گیرندهی SQL از آن پشتیبانی میکنند.
در این میان، موردی که بیشتر مورد استفاده قرار میگیرد، DBeaver است؛ اکنون بیایید Dbeaver را بررسی کنیم.
اتصال به پایگاهدادهSQLite از طریق سرویس گیرندهی (SQL (DBeaver
از آنجاییکه من از Google Colab استفاده میکنم، بنابراین قصدم این است که فایل خودم یعنی test.db را بر روی دستگاه محلی خودم بارگیری کنم. شما نیز اگر پایتون را بر روی دستگاه محلی خود اجرا میکنید، میتوانید از سرویس گیرندهی SQL خودتان برای اتصال مستقیم به فایل پایگاهداده استفاده کنید.
در DBeaver، یک اتصال جدید ایجاد کنید و SQLite را بهعنوان نوع پایگاهداده انتخاب کنید.
سپس، به فایل پایگاهداده بروید.
ادغام یکپارچه با کتابخانهی pandas
آیا فکر میکنید همهچیز همین است؟ خیر. در واقع، SQLite بهعنوان یک ویژگی داخلی در پایتون، میتواند به صورت یکپارچه با فریم دادههای pandas ادغام شود.
اکنون بیایید یک فریم داده را تعریف کنیم.
سپس، ما به سادگی و با فراخوانی متد () to_sql از فریم داده، میتوانیم آنرا در پایگاهداده ذخیره کنیم.
همینه! ما حتی از قبل هم به ایجاد جدول نیازی نداریم؛ بدین ترتیب نوع دادهها و طول ستونها، مشخص خواهند شد. البته اگر بخواهید میتوانید از قبل آنها را تعریف کنید.
سپس، میخواهیم دو جدول USER و SKILL را به یکدیگر پیوند دهیم و نتیجهی بهدست آمده را در قالب یک فریم دادهی پانداس بخوانیم. این فریم داده نیز یکپارچه است.
اکنون، بیایید نتایج را در جدول جدیدی بنام USER_SKILL بنویسیم
سپس، ما برای بازیابی جدول، از سرویس گیرندهی SQL نیز میتوانیم استفاده کنیم.
خلاصه
در واقع، شگفتیهای بسیاری در پایتون پنهان شده است. البته این واقعا به معنای پنهان شدن نیست؛ بلکه صرفا بدین معناست که ویژگیهای خارجی بسیاری در پایتون وجود دارد که همهی آنها باید کشف شوند.
من در این مقاله به این موضوع پرداختم که چگونه میتوان با استفاده از کتابخانهی داخلی پایتون، یعنی sqlite3، به ایجاد و ویرایش جداول در پایگاهدادهی SQLite پرداخت. البته این پایگاهداده از دستورات بهروزرسانی و حذف نیز پشتیبانی میکند؛ اما من فکر میکنم که خودتان بعدا میتوانید این دستورات را امتحان کنید.
از همه مهمتر اینکه ما به راحتی میتوانیم یک جدول از پایگاهدادهیSQLite را بهصورت یک قاب دادهی پانداس بخوانیم؛ یا بالعکس. بدین ترتیب این امکان برای ما فراهم میشود که بسیار راحتتر بتوانیم با پایگاهدادهی رابطهای سبک وزن خود ارتباط برقرار کنیم.
ممکن است این موضوع نظر شما را جلب کند که در پایگاهدادهیSQLite فرایند احراز هویت انجام نمیشود؛ اما این رفتار کاملاً مطابق با طراحیِ سبک وزنِ این پایگاهداده است. به دنبال کشف ویژگیهای شگفتآورتر موجود در پایتون بروید و از آن لذت ببرید!
تمام کدهای ارائه شده در این مقاله را میتوانید در Google Colab Notebook مشاهده کنید.