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/12 13:18] – [Przykład importu utworów do modelu Song] 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 179: | Linia 181: | ||
Widok modelu do którego importujemy utwory: | Widok modelu do którego importujemy utwory: | ||
- | |||
<code python> | <code python> | ||
Linia 186: | Linia 187: | ||
from .verbose_names import verbose_names | from .verbose_names import verbose_names | ||
from django.core.validators import MinValueValidator, | 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): | class Song(BaseModel): | ||
Linia 192: | Linia 202: | ||
validators=[MinValueValidator(1000), | validators=[MinValueValidator(1000), | ||
duration = models.DurationField(null=True, | duration = models.DurationField(null=True, | ||
- | # created_at = models.DateTimeField(default=timezone.now, | ||
- | # modified_at = models.DateTimeField(auto_now=True, | ||
class Meta: | class Meta: | ||
Linia 204: | Linia 212: | ||
</ | </ | ||
+ | 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.1702383501.txt.gz · ostatnio zmienione: 2023/12/12 13:18 przez sindap