وقتی کار می کنی روی یک پروژه Django – خواه یک پروژه جانبی کوچک باشد یا یک برنامه وب در حال رشد – نقطه ای به وجود می آید که شما نیاز دارید export پایگاه داده شما

شاید شما در حال ارائه ارائه دهندگان میزبان باشید. شاید شما در حال پشتیبان گیری از چیزها یا به اشتراک گذاری داده ها با کسی باشید. یا شاید شما فقط می خواهید با فرمت دیگری به داده های خود نگاه کنید.

صادر کردن یک بانک اطلاعاتی به نظر فنی (و بله ، نوع آن است) ، اما لازم نیست سخت باشد. Django به شما ابزارهای داخلی می دهد که باعث می شود process خیلی راحت تر از آنچه بیشتر مردم انتظار دارند.

من مدتی است که با Django کار کرده ام و به توسعه دهندگان کمک کرده ام ، از مبتدیان گرفته تا جوانب مثبت ، با صادرات پایگاه داده سروکار داشته باشند.

در این آموزش ، من می خواهم شما را از طریق تمام راه های شما طی کنم export پایگاه داده شما در Django.

این چیزی است که ما پوشش خواهیم داد:

  • چرا می خواهید پایگاه داده خود را صادر کنید؟

  • اولین چیزها اول: پایگاه داده خود را بشناسید

    • روش 1: از دستور dumpdata Django استفاده کنید

    • نکته سریع در مورد وسایل

    • روش 2: از ابزارهای پایگاه داده خود استفاده کنید

    • روش 3: برای Excel یا Google Sheets به CSV صادر کنید

    • روش 4: از اقدامات مدیر Django استفاده کنید

  • متداول

    • آیا می توانم export داده ها در قالب XML به جای JSON؟

    • بهترین قالب برای تهیه نسخه پشتیبان چیست؟

    • آیا می توانم پشتیبان تهیه کنم؟

  • خواندن بیشتر

  • پیچیدن

چرا می خواهید پایگاه داده خود را صادر کنید؟

دلایلی وجود دارد که ممکن است بخواهید export پایگاه داده Django شما:

  • تهیه نسخه پشتیبان: قبل از ایجاد تغییرات بزرگ ، ذخیره یک نسخه هوشمندانه است.

  • مهاجرت: انتقال به سرور دیگر یا تغییر از SQLite به PostgreSQL.

  • داده های اشتراک گذاری: ارائه عکس فوری از داده ها به هم تیمی ها یا تحلیلگران.

  • تست: جمع آوری یک آزمایش یا محیط صحنه با داده های واقعی.

  • رعایت: دلایل قانونی یا سیاست برای ذخیره داده ها در خارج از برنامه خود.

پیشنهاد می‌کنیم بخوانید:  جاوا اسکریپت: بررسی کنید که آیا متغیر رشته ای است یا نه جاوا اسکریپت از انواع داده ها مانند رشته ها، اعداد، شناورها و غیره پشتیبانی می کند. به طور معمول، شما آنها را با قرار دادن کاراکترها در گیومه های دوتایی یا تکی ایجاد می کنید. همچنین، می‌توانید با استفاده از سازنده String() جدید یک رشته بسازید:...

خبر خوب؟ Django ابزارهای محکمی برای کمک به شما در انجام همه این کارها سریع و تمیز دارد.

اولین چیزها اول: پایگاه داده خود را بشناسید

Django از چندین نوع بانک اطلاعاتی پشتیبانی می کند: SQLITE (پیش فرض) ، PostgreSQL ، MySQL و موارد دیگر. وابسته روی آنچه شما استفاده می کنید ، خود export process ممکن است کمی متفاوت به نظر برسد.

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

روش 1: از Django استفاده کنید dumpdata فرمان

این ساده ترین و متداول ترین راه است export داده های شما

گام به گام:

  1. خود را باز کنید terminalبشر

  2. به پوشه پروژه Django خود بروید.

  3. دستور زیر را اجرا کنید:

python manage.py dumpdata > db.json

این است شما به تازگی تمام داده های خود را در یک فایل JSON به نام صادر کرده اید db.jsonبشر

اینجا چه اتفاقی می افتد؟

  • dumpdata یک دستور مدیریت Django است که از طریق پایگاه داده شما عبور می کند و داده ها را از تمام مدل ها صادر می کند.

  • در > نماد به معنای “ارسال خروجی به یک پرونده” به جای چاپ آن است روی صفحه نمایش

نمی داند export فقط یک برنامه؟

شما می توانید خاص تر باشید:

python manage.py dumpdata myapp > myapp_data.json

یا حتی یک مدل:

python manage.py dumpdata myapp.MyModel > model_data.json

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

نکته سریع در مورد وسایل

پرونده ای که تازه ایجاد کرده اید (db.json) نامیده می شود فیکسچر در جنگو با استفاده از: می توانید از آن برای بارگیری داده ها در پروژه دیگر استفاده کنید:

python manage.py loaddata db.json

پس بله ، dumpdata با loaddata یک دسته کوچک موسیقی جاز فوق العاده مفید برای جابجایی داده ها است.

روش 2: از ابزارهای پایگاه داده خود استفاده کنید

وابسته روی از چه پایگاه داده ای استفاده می کنید ، می توانید از ابزارهایی که در خارج از Django کار می کنند نیز استفاده کنید.

برای SQLite (پیش فرض Django)

پایگاه داده شما فقط یک پرونده است که معمولاً نامگذاری می شود db.sqlite3بشر

می توانید آن را مانند هر پرونده دیگر کپی کنید:

cp db.sqlite3 db_backup.sqlite3

اگر می خواهید export داده ها به عنوان بیانیه های SQL ، می توانید از آن استفاده کنید sqlite3 command-line ابزار:

sqlite3 db.sqlite3 .dump > db_dump.sql

این یک پرونده با تمام دستورات SQL مورد نیاز برای بازآفرینی پایگاه داده شما ایجاد می کند. بسیار مفید برای پشتیبان گیری.

پیشنهاد می‌کنیم بخوانید:  ایجاد و تجزیه Datetime در پایتون با Delorean

برای postgresql

شما نیاز به دسترسی به pg_dump، که داخلی PostgreSQL است export ابزار

در اینجا یک مثال آورده شده است:

pg_dump -U your_username your_database > backup.sql

ممکن است بسته به رمز عبور خود را وارد کنید روی روش تنظیم پایگاه داده شما.

می توانید اطلاعات بیشتری پیدا کنید روی pg_dump اینجا

روش 3: برای Excel یا Google Sheets به CSV صادر کنید

اگر داده های خود را در صفحه گسترده می خواهید ، می توانید export آن را به فرمت CSV.

Django برای این کار دستور داخلی ندارد ، اما می توانید یک اسکریپت ساده بنویسید.

در اینجا مثالی آورده شده است که تمام مدخل ها را از یک مدل صادر می کند:

مثال:

بیایید بگوییم شما مدلی مانند این دارید:

# models.py
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)

به export آن را به CSV:

# export_books.py
import csv
from myapp.models import Book

with open('books.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Title', 'Author'])

    for book in Book.objects.all():
        writer.writerow([book.title, book.author])

این اسکریپت را با پوسته Django اجرا کنید:

python manage.py shell < export_books.py

حالا شما books.csv پرونده ای که می توانید در برگه های اکسل یا Google باز کنید.

روش 4: از اقدامات مدیر Django استفاده کنید

اگر مدل شما در Django Admin ثبت شده است ، می توانید یک عمل مدیر سفارشی ایجاد کنید که به شما امکان می دهد export داده ها مستقیماً از رابط.

در اینجا یک مثال سریع وجود دارد:

# admin.py
import csv
from django.http import HttpResponse
from .models import Book

@admin.action(description='Export selected books to CSV')
def export_to_csv(modeladmin, request, queryset):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=books.csv'
    writer = csv.writer(response)
    writer.writerow(['Title', 'Author'])

    for book in queryset:
        writer.writerow([book.title, book.author])

    return response

class BookAdmin(admin.ModelAdmin):
    actions = [export_to_csv]

admin.site.register(Book, BookAdmin)

اکنون می توانید ردیف ها را در Django Admin انتخاب کنید و export آنها آسان و کاربر پسند.

متداول

آیا می توانم export داده ها در قالب XML به جای JSON؟

بله فقط اضافه کنید --format گزینه:

python manage.py dumpdata --format=xml > db.xml

بهترین قالب برای تهیه نسخه پشتیبان چیست؟

JSON برای نقل و انتقالات Django-to-Django عالی است. SQL (استفاده از pg_dump یا sqlite3 .dump) برای پشتیبان گیری کامل از پایگاه داده بهتر است.

آیا می توانم پشتیبان تهیه کنم؟

کاملا. یک کار Cron یا یک اسکریپت ساده پایتون را تنظیم کنید dumpdata روی یک برنامه و فایل را در ذخیره سازی ابری ذخیره می کند.

پیچیدن

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

خواندن بیشتر

  • مستندات Django Dumpdata

  • postgresql pg_dump

  • پشتیبان گیری از پایگاه داده های SQLite

  • دستور Django Loaddata