Model Django
Django zapewnia dobry wybór obsługę baz danych, w tym: PostgreSQL, MySQL, SQLite, Oracle.
Django zapewnia jednolity wywołań API dla tych baz danych. Możemy wybrać inną bazę danych zgodnie z ich potrzebami biznesowymi.
MySQL jest najczęściej używanym w bazie aplikacji WWW. W tym rozdziale będziemy MySQL jako przykład zostaną wprowadzone. Można witryny poradnik MySQL , aby dowiedzieć się więcej podstaw MySQL.
Konfiguracja bazy danych
Znajdziemy bazach elementy konfiguracji w pliku settings.py dla projektu, informacje zostaną zweryfikowane jako:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } }
Powyższy zawiera nazwę bazy danych i informacji o użytkowniku, który odpowiada na te same ustawienia bazy danych i użytkownika MySQL. Django Według tego ustawienia, baza danych MySQL oraz odpowiadająca użytkownik łączy.
definicja modelu
Tworzenie APP
Django zapewnia, że jeśli chcesz użyć modelu, musimy stworzyć aplikację. Używamy następujące polecenie, aby utworzyć TestModel aplikacja:
python manage.py startapp TestModel
Struktura katalogów jest następująca:
HelloWorld |-- TestModel | |-- __init__.py | |-- admin.py | |-- models.py | |-- tests.py | `-- views.py
Modyfikujemy TestModel plik / models.py, co następuje:
# models.py from django.db import models class Test(models.Model): name = models.CharField(max_length=20)
Nad nazwą klasy reprezentuje nazwy tabel bazy danych, a odziedziczone models.Model, klasa wewnątrz pola reprezentuje pól tabeli danych (nazwę), typ danych, których autorem jest Charfield (odpowiednik varchar), DateField (odpowiednik datetime), MAX_LENGTH parametry określonej długości.
Następnie znaleźć INSTALLED_APPS ten w settings.py w następujący sposób:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', # 添加此项 )
Uruchom wiersz poleceń python manage.py syncdb patrz linie słowo "Tworzenie tabeli pl.", a tabela danych została utworzona.
Creating tables pl. …… Creating table TestModel_test #我们自定义的表 ……
Struktura tabeli Skład: nazwa aplikacji _ nazwa klasy (np TestModel_test).
Uwaga: Chociaż nie mamy modele ustawić klucz podstawowy tabeli, ale Django automatycznie dodaje id jako klucz podstawowy.
operacje na bazie danych
Następnie dodać testdb.py katalogu plik HelloWorld i modyfikować urls.py:
from django.conf.urls import * from HelloWorld.view import hello from HelloWorld.testdb import testdb urlpatterns = patterns("", ('^hello/$', hello), ('^testdb/$', testdb), )
Dodawanie danych
Dodawanie danych trzeba utworzyć obiekt, a następnie wykonać funkcję, odpowiednik INSERT SQL zapisać:
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): test1 = Test(name='w3cschool.cc') test1.save() return HttpResponse("<p>数据添加成功!</p>")
Możesz zobaczyć http://192.168.45.3:8000/testdb/ dostępu do danych dodać szybkiego sukcesu.
Pobierz dane
Django oferuje kilka sposobów, aby uzyskać zawartość bazy danych, jak pokazano w poniższym kodzie:
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 初始化 response = "" response1 = "" # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM list = Test.objects.all() # filter相当于SQL中的WHERE,可设置条件过滤结果 response2 = Test.objects.filter(id=1) # 获取单个对象 response3 = Test.objects.get(id=1) # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2; Test.objects.order_by('name')[0:2] #数据排序 Test.objects.order_by("id") # 上面的方法可以连锁使用 Test.objects.filter(name="w3cschool.cc").order_by("id") # 输出所有数据 for var in list: response1 += var.name + " " response = response1 return HttpResponse("<p>" + response + "</p>")
Wyjście jest pokazany poniżej:
aktualizacja danych
Można modyfikować dane za pomocą save () lub aktualizacji ():
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE test1 = Test.objects.get(id=1) test1.name = 'w3cschool本教程' test1.save() # 另外一种方式 #Test.objects.filter(id=1).update(name='w3cschool本教程') # 修改所有的列 # Test.objects.all().update(name='w3cschool本教程') return HttpResponse("<p>修改成功</p>")
Usuwanie danych
Usuwane obiekty w bazie danych wystarczy wywołać metodę usuwania obiektu ():
# -*- coding: utf-8 -*- from django.http import HttpResponse from TestModel.models import Test # 数据库操作 def testdb(request): # 删除id=1的数据 test1 = Test.objects.get(id=1) test1.delete() # 另外一种方式 # Test.objects.filter(id=1).delete() # 删除所有数据 # Test.objects.all().delete() return HttpResponse("<p>删除成功</p>")