چگونه یک پایگاه‌داده با استفاده از پایتون بسازیم

منتشر‌شده در towardsdatascience به تاریخ ۲۳ آگوست ۲۰۲۱
لینک منبع How To Build A Database Using Python

مقدمه

کتابخانهSQLAlchemy یک کتابخانه پایتون برای پیاده‌سازی پایگاه‌های داده SQL بدون استفاده از خود زبانSQL است. به عبارت دیگر، تمام کاری که شما باید انجام دهید این است که پایگاه‌داده‌های خود را با استفاده از زبان پایتون پیاده‌سازی کنید.

فلاسک-SQLAlchemy یک کتابخانه برای اتصال کتابخانه SQL LAlchemy در داخل پروژه فلاسک شما است، و باعث می‌شود پیاده‌سازی پایگاه‌داده شما از همیشه آسان‌تر شود. این مقاله به شما نشان می‌دهد که چگونه پایگاه داده خود را با استفاده از کتابخانه Flask-SQLAlchemy بسازید.

بدون جزئیات بیشتر، بیایید شروع کنیم!

پایگاه‌داده

قبل از شروع به پیاده‌سازی، اجازه دهید در مورد پایگاه‌داده برای شما توضیح دهم. پایگاه‌داده چیست؟ این پایگاه‌داده مجموعه‌ای از داده‌ها است که توسط یکدیگر یکپارچه شده‌اند، جایی که ما می‌توانیم با استفاده از کامپیوتر خود به آن دسترسی داشته باشیم.

در علم داده، شما احتمالا داده‌ها را به شکلی مانند یک صفحه گسترده وارد و تجزیه و تحلیل خواهید کرد. در زمینه توسعه نرم‌افزار، کمی متفاوت است. بیایید نگاهی به این صفحه گسترده بیاندازیم.

در داخل صفحه گسترده، می‌توانیم ببینیم که دو ستون وجود دارد. عنوان کتاب و نام نویسنده وجود دارد. اگر به ستون نویسنده نگاه کنید، خواهید دید که برخی از مقادیر چندین بار تکرار می‌شوند. این شرط را افزونگی می‌نامیم.

این بهترین روش برای استفاده از کل مجموعه داده‌ها به عنوان یک جدول نیست، به خصوص برای کسانی که می‌خواهند یک وب سایت یا یک برنامه ایجاد کنند. در عوض، ما باید جدول را از هم جدا کنیم، که آن را نرمال‌سازی می‌نامیم.

به طور خلاصه، فرآیند نرمال سازی مجموعه داده را به چندین جدول جدا خواهد کرد، و هر جدول حاوی شناسه منحصر به فرد خود برای آن است. ما هر یک از شناسه‌ها را کلید اصلی می‌نامیم. اگر مجموعه داده را در بالا جدا کنیم، مجموعه داده‌ای شبیه به این خواهیم داشت:

همانطور که می‌توانید از بالا ببینید، مجموعه داده در حال حاضر به دو جدول تقسیم شده‌است. جدول کتاب و جدول نویسنده‌ی کتاب هستند. نام نویسنده در جدول نویسنده است. بنابراین، ما نمی‌توانیم به طور مستقیم به این نام مانند آنچه که در صفحه گسترده انجام داده‌ایم، دسترسی داشته باشیم.

برای بازیابی نام نویسنده، باید با گرفتن شناسه از جدول مولف، جدول کتاب را به جدول مولف متصل کنیم. ما شناسه مولف را به عنوان کلید خارجی جدول کتاب در نظر می‌گیریم.

شاید پیچیده باشد، اما اگر شما شروع به پیاده‌سازی یک پایگاه‌داده برای ساخت برنامه‌ها کنید، عملکرد برنامه شما را بهبود خواهد بخشید.

پیاده‌سازی

نصب کتابخانه

قبل از اینکه به مرحله اجرا برسیم، اولین کاری که باید انجام دهیم این است که کتابخانه را در کامپیوتر خود نصب کنیم. برای نصب آن، می‌توانیم از pip برای انجام آن استفاده کنیم. این دستور برای نصب کتابخانه است:

برای بارگذاری کتابخانه، می‌توانیم ترکیب زیر را فراخوانی کنیم:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

همانطور که از نام کتابخانه می‌دانید، ما همچنین باید کتابخانه فلاسک را بارگزاری کنیم.

آغاز موتور پایگاه‌داده

بعد از این که کتابخانه را بارگزاری کردیم، گام بعدی راه‌اندازی شی SQL LAlchemy و مسیر به پایگاه‌داده ما است. به طور پیش‌فرض، SQLAlchemy با نرم‌افزار SQLite همراه است. SQLite یک سیستم مدیریت پایگاه‌داده است که در آن ما می‌توانیم پایگاه‌های داده‌ای را که ایجاد کرده‌ایم بسازیم و تجزیه و تحلیل کنیم. می‌توانید از DBMS دیگری مانند MySQL ،PostgreSQL یا هر DBMS که ترجیح می‌دهید استفاده کنید. برای راه‌اندازی پایگاه‌داده ما، لطفاً این خطوط کد را اضافه کنید:

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///C:\\sqlite\\library.db'

db = SQLAlchemy(app)

db.init_app(app)

C:\anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning( C:\anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning(

این کدFlask وSQLAlchemy را مقداردهی اولیه می‌کند و پارامتری را تنظیم می‌کنیم که شامل مسیر پایگاه‌داده ما می‌شود. در این مورد، مسیر پایگاه‌داده این است: sqlite:///C:\\sqlite\\library.db.

پیاده سازی پایگاه داده

پس از تنظیم اشیاء و پارامترها، می‌توانیم پیاده‌سازی پایگاه‌داده را شروع کنیم. بیایید جداول پایگاه‌داده خود را در بالا فراخوانی کنیم:

همانطور که می‌توانید از بالا ببینید، دو جدول روی آن وجود دارد. هر جدول کلاس خود را خواهد داشت، که در آن می‌توانیم نام ستون و رابطه بین جداول را آغاز کنیم. ما یک کلاس به نام مدل را برای اجرای جداول خود مالک خواهیم شد. براساس شکل بالا، کد به این شکل است:

class Author(db.Model):
# Initialize the Column
id = db.Column(db.Integer, nullable=False, primary_key=True)
name = db.Column(db.String(100), nullable=False)
# For displaying our database record rather than just numbers
def __repr__(self):
return '<Author %r>' % self.name
class Book(db.Model):
# Initialize the Column
id = db.Column(db.Integer, nullable=False, primary_key=True)
author_id = db.Column(db.Integer, db.ForeignKey('author.id'), nullable=False)
title = db.Column(db.String(100), nullable=False)
# Initialize the relationship
author = db.relationship('Author', backref=db.backref('books', lazy=True))
# For displaying our database record rather than just numbers
def __repr__(self):
return '<Book %r>' % self.title

درج مقدار

پس از ایجاد کلاس، می‌توانیم پایگاه‌داده خود را بسازیم. برای ساخت پایگاه‌داده می‌توانید به پایانه خود دسترسی داشته باشید و این فرمان را اجرا کنید:

db.create_all()

حال بیایید سعی کنیم مقادیر را بر روی جداول خود قرار دهیم. برای این مثال، اجازه دهید داده‌ها را از صفحه گسترده قبلی در بالا وارد کنیم. شما می‌توانید از این کد برای درج مقادیر زیر پیروی کنید:

# Initialize the object
malcolm = Author(name='Malcolm Gladwell')
newport = Author(name='Cal Newport')
book = Book(title='Outliers', author=malcolm)
book = Book(title='The Tipping Point', author=malcolm)
book = Book(title='Blink', author=malcolm)
book = Book(title='Deep Work', author=newport)
book = Book(title='Digital Minimalism', author=newport)
# Record the variables above
db.session.add(malcolm)
db.session.add(newport)
db.session.add(book)
# Insert to the database
db.session.commit()

کوائری جدول

پس از اینکه مقادیر را در داخل جداول قرار دادید، حال بیایید پرس و جو را اجرا کنیم تا ببینیم آیا داده‌ها وجود دارند یا نه. در اینجا به کد انجام این کار اشاره می‌کنیم:

Book.query.all()
[<Book 'Outliers'>,
<Book 'The Tipping Point'>,
<Book 'Blink'>,
<Book 'Deep Work'>,
<Book 'Digital Minimalism'>]

همانطور که می‌توانید از بالا ببینید، ارائه ما موفقیت‌آمیز است. خوب، این هنوز یک مقدمه است، اما امیدوارم بتوانید مفهوم آن را درک کرده و آن را در یک پروژه بزرگ‌تر پیاده کنید.

ضمیمه: SQL Query

علاوه بر کتابخانه Flask-SQLAlchemy، من به شما نشان خواهم داد که چگونه با استفاده از SQL Lite بومی به پایگاه‌داده دسترسی پیدا کنید. ما این کار را انجام می‌دهیم تا مطمئن شویم که پایگاه‌داده ما قبلا بر روی آن ایجاد شده‌است. برای دسترسی به SQL Lite، می‌توانید پایانه خود را باز کرده و این سند را بنویسید:

sqlite3

بعد از آن، رابطSQL Lite مانند این را نشان خواهد داد:

در مرحله بعد، می‌توانید پایگاه‌داده خود را با استفاده از دستور .open باز کرده و مسیر را به پایگاه‌داده مانند این اضافه کنید:

.open absolute//path//to//your//database.db

برای اطمینان از اینکه پایگاه داده را باز کرده‌ایم لطفاً .tables را در ترمینال مانند این بنویسید:

.tables

و این نتیجه را ایجاد می‌کند:

خوب است، کار می‌کند. حالا بیایید زبان SQL را برای پرس و جو از پایگاه‌داده امتحان کنیم:

SELECT * FROM books

و این هم از نتیجه:

حالا بیایید سعی کنیم هر دو جدول را به عنوان یک ترکیب کنیم. می توانید این خط کد را در ترمینال خود بنویسید:

SELECT Book.title, Author.name FROM Book
INNER JOIN Author ON Book.author_id = Author.id;

و این هم از نتیجه:

نکات نهایی

آفرین! حالا شما پایگاه‌داده خود را با استفاده از کتابخانه Flask-SQLAlchemy اجرا کرده‌اید. امیدوارم این مقاله به شما در اجرای یک پایگاه‌داده در پروژه‌های شما کمک کند، به خصوص زمانی که می‌خواهید یک برنامه کاربردی تحت وب با استفاده از فلاسک ایجاد کنید.

این متن با استفاده از ربات ترجمه مقالات علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.