pl:python:importmdb2models
Różnice
Różnice między wybraną wersją a wersją aktualną.
| Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
| pl:python:importmdb2models [2023/12/07 12:52] – sindap | pl:python:importmdb2models [2023/12/12 13:55] (aktualna) – [Przykład importu utworów do modelu Song] sindap | ||
|---|---|---|---|
| Linia 1: | Linia 1: | ||
| ====== Import danych z bazy MS Access ====== | ====== Import danych z bazy MS Access ====== | ||
| + | |||
| + | ===== Wstęp ===== | ||
| Przeniesienie danych z bazy danych Microsoft Access do aplikacji Django może być zrealizowane poprzez kilka kroków. Oto jedna z najczęściej stosowanych metod: | Przeniesienie danych z bazy danych Microsoft Access do aplikacji Django może być zrealizowane poprzez kilka kroków. Oto jedna z najczęściej stosowanych metod: | ||
| Linia 40: | Linia 42: | ||
| * Skorzystaj z Django ORM (Object-Relational Mapping), aby zapisywać dane z pliku CSV do bazy danych Django. | * Skorzystaj z Django ORM (Object-Relational Mapping), aby zapisywać dane z pliku CSV do bazy danych Django. | ||
| + | * Można też dodać obsługę błędu: | ||
| + | |||
| + | <code python> | ||
| + | import csv | ||
| + | from django.core.management.base import BaseCommand | ||
| + | from yourapp.models import YourModel | ||
| + | |||
| + | class Command(BaseCommand): | ||
| + | help = ' | ||
| + | |||
| + | def handle(self, | ||
| + | with open(' | ||
| + | csv_reader = csv.reader(csvfile) | ||
| + | for row in csv_reader: | ||
| + | try: | ||
| + | YourModel.objects.create(field1=row[0], | ||
| + | except Exception as e: | ||
| + | # Obsługa błędów, np. zapis do pliku lub logowanie | ||
| + | self.stdout.write(self.style.ERROR(f" | ||
| + | </ | ||
| 5. **Migracje i synchronizacja bazy danych:** | 5. **Migracje i synchronizacja bazy danych:** | ||
| Linia 134: | Linia 156: | ||
| Powyższy kod jest jedynie przykładem, | Powyższy kod jest jedynie przykładem, | ||
| + | W powyższych przykładach, | ||
| + | |||
| + | W praktyce mogą się one znajdować na przykład: | ||
| + | |||
| + | 1. **W głównym katalogu projektu Django:** | ||
| + | * Jeśli pliki CSV są w głównym katalogu projektu, to ścieżki w kodzie mogą wyglądać na przykład tak: | ||
| + | |||
| + | <code python> | ||
| + | with open(' | ||
| + | # ... | ||
| + | </ | ||
| + | |||
| + | 2. **W katalogu aplikacji Django:** | ||
| + | * Możesz również umieścić pliki CSV w katalogu konkretnej aplikacji Django (np. w katalogu, gdzie znajduje się plik '' | ||
| + | |||
| + | <code python> | ||
| + | with open(' | ||
| + | # ... | ||
| + | </ | ||
| + | |||
| + | Pamiętaj, aby dostosować ścieżki do rzeczywistej struktury katalogów w twoim projekcie Django. Ważne jest również, aby pliki CSV były dostępne w czasie wykonywania skryptu importu. Jeżeli pliki znajdują się w innych katalogach, upewnij się, że podajesz poprawne ścieżki dostępu. | ||
| + | |||
| + | ===== Przykład importu utworów do modelu Song ===== | ||
| + | |||
| + | Widok modelu do którego importujemy utwory: | ||
| + | |||
| + | <code python> | ||
| + | from django.db import models | ||
| + | from django.utils import timezone | ||
| + | from .verbose_names import verbose_names | ||
| + | from django.core.validators import MinValueValidator, | ||
| + | |||
| + | |||
| + | class BaseModel(models.Model): | ||
| + | created_at = models.DateTimeField(default=timezone.now, | ||
| + | modified_at = models.DateTimeField(auto_now=True, | ||
| + | |||
| + | class Meta: | ||
| + | abstract = True | ||
| + | |||
| + | |||
| + | class Song(BaseModel): | ||
| + | song_title = models.CharField(max_length=200, | ||
| + | release_year = models.PositiveIntegerField( | ||
| + | validators=[MinValueValidator(1000), | ||
| + | duration = models.DurationField(null=True, | ||
| + | |||
| + | class Meta: | ||
| + | verbose_name = ' | ||
| + | verbose_name_plural = ' | ||
| + | unique_together = (' | ||
| + | |||
| + | def __str__(self): | ||
| + | return f" | ||
| + | </ | ||
| + | |||
| + | Widok struktury przykładowego pliku CSV: | ||
| + | |||
| + | <code csv song_data.csv> | ||
| + | Utwór; | ||
| + | Złoty krążek; | ||
| + | Alibaba; | ||
| + | Złoty Liść; | ||
| + | Blada gwiazda; | ||
| + | Pusta Studnia; | ||
| + | Złamany patyk; | ||
| + | Stary Żółw; | ||
| + | Ślepa Furia; | ||
| + | Cuchnący hipopotam; | ||
| + | Blade Jajo; | ||
| + | Śmierdząca kupa; | ||
| + | Zryty mózg; | ||
| + | Maniana; | ||
| + | Zimny pręt; | ||
| + | Złamana glizda; | ||
| + | Zimny piach; | ||
| + | Blade oko; | ||
| + | Płonący wiatr; | ||
| + | Gorące Iglo; | ||
| + | Delikatny łomot; | ||
| + | Suche gacie na dnie morza; | ||
| + | Matowe lustro; | ||
| + | Głucha cisza; | ||
| + | Blada czerwień; | ||
| + | Niski drapacz chmur; | ||
| + | Słoneczna sztolnia; | ||
| + | Płytki prysznic; | ||
| + | Mocna herbata; | ||
| + | Zielona cytryna; | ||
| + | Polny czołg; | ||
| + | </ | ||
| + | |||
| + | Powyższy plik umieszczamy w katalogu django tam gdzie znajduje się plik '' | ||
| + | |||
| + | W katalogu naszej aplikacji tworzymy katalogi '' | ||
| + | |||
| + | < | ||
| + | yourproject/ | ||
| + | ├── yourproject/ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | │ | ||
| + | └── venv/ | ||
| + | </ | ||
| + | |||
| + | Przykładowy widok pliku '' | ||
| + | |||
| + | <code python importdata.py> | ||
| + | import csv | ||
| + | from django.core.management.base import BaseCommand | ||
| + | from dbcdapp.models import Song | ||
| + | from datetime import timedelta | ||
| + | |||
| + | class Command(BaseCommand): | ||
| + | help = ' | ||
| + | |||
| + | def handle(self, | ||
| + | with open(' | ||
| + | csv_reader = csv.reader(csvfile, | ||
| + | for row in csv_reader: | ||
| + | duration_str = row[2] | ||
| + | duration_parts = duration_str.split(':' | ||
| + | duration = timedelta(hours=int(duration_parts[0]), | ||
| + | | ||
| + | Song.objects.create(song_title=row[0], | ||
| + | self.stdout.write(self.style.SUCCESS(' | ||
| + | </ | ||
| + | |||
| + | Powyższy kod dzieli ciąg '' | ||
| + | |||
| + | Upewnij się, że kolumna '' | ||
| + | |||
| + | Warto też zauważyć, że plik CSV nie zawiera nagłówka kolumn. Pierwsza linia zawiera dane utworu. Natomiast do pul modelu '' | ||
| + | |||
| + | Trzeba również pamiętać, że '' | ||
pl/python/importmdb2models.1701949929.txt.gz · ostatnio zmienione: przez sindap
