Django의 데이터베이스 및 백그라운드 관리
프로비저닝
pip install pymysql
__init__.py
파일에 다음 문장from pymysql import install_as_MySQLdb
install_as_MySQLdb()
을 추가하면 Django의 ORM이 mysqldb 방식으로PyMySQLDATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost', #
'PORT': 3306, #
'USER': 'root', #
'PASSWORD': '******', #
'NAME': 'two_demo' #
}
}
create database two_demo default charset=utf8;
_
**dbtable에서 데이터베이스 이름을 자율적으로 가리키기 타입
설명
AutoField
자동으로 증가하는 IntegerField - 일반적으로 지정하지 않고 자동으로 증가하는 등록 정보를 생성합니다.
BooleanField
부울 유형, True 및 False
NullBooleanField
Null, True, False 세 가지 데이터 유형 지원
CharField
문자열, 매개 변수 maxlength는 최대 문자 수를 표시합니다
TextField
일반적으로 4000자 이상
IntegerField
정수
DecimalField
십진 부동 소수점 수, 매개 변수 maxdigits는 총 자릿수, decimal 매개변수를 나타냅니다.places는 소수 비트를 표시하는데 보통 저장 금액에 쓰인다
FloatField
부동 소수점 수
DateField
날짜, auto 매개변수가 두 개 있음now_add 및 autonow_add;여기서 autonow_dd 기본값은false이고true로 설정되면 이 필드를 저장할 때 현재 시간으로 설정하고 변경할 때마다 자동으로 업데이트됩니다.autonow_dd 기본값도false입니다.true로 설정하면 모델이 처음 만들어졌을 때 필드의 값을 만드는 시간으로 설정하고 나중에 대상을 수정할 때 필드의 값을 업데이트하지 않습니다.두 개를 조합해서 사용할 수 없으므로 서로 배척할 수 있으니 주의하시오
TimeField
시간, 매개 변수는 DateField와 같습니다.
DateTimeField
날짜 시간, 매개 변수는 DateField와 같습니다.
FileField
파일 업로드 필드
ImageField
FileField 에 상속되어 업로드된 내용을 검사하여 올바른 그림인지 확인
on_delete
** 옵션을 통해 메인 테이블의 데이터를 삭제해야 한다. 외부 키 인용 테이블 데이터가 어떻게 처리되는지 다음과 같은 옵션 상수가 있다.옮기다
python manage.py makemigrations
python manage.py migrate
def create_book(request):
#
book = BookInfo()
book.bname = " "
book.bdate = "1980-01-01"
book.bcomment = 500
book.breaded = 10000
book.save()
BookInfo.objects.create(
bname=" ",
bdate="1980-05-03",
bcomment=500,
breaded=5000
)
데이터베이스 --- 삭제
def delete_hero(request):
#
# hero = HeroInfo.objects.filter(hname=" ").first()
# hero.delete()
#
HeroInfo.objects.filter(hname=" ").delete()
데이터베이스 --- 수정
def update_hero(request):
#
# hero = HeroInfo.objects.filter(hname=" ").first()
# hero.hname = " "
# hero.save()
#
HeroInfo.objects.filter(hname=" ").update(hname=" ")
데이터베이스 ----조회
기본 질의
# 1 [ ]
# filter
book = BookInfo.objects.filter(id=1)
book = BookInfo.objects.get(id=1)
# pk
book = BookInfo.objects.get(pk=1)
print(book)
#
#
allbook = BookInfo.objects.all()
print(allbook)
#
number = BookInfo.objects.count()
print(number)
# ,
BookInfo.objects.get(id=100)
Traceback (most recent call last):
db.models.DoesNotExist: BookInfo matching query does not exist.
질의 필터링
__ =
**BookInfo.objects.filter(id__exact=1)
:
BookInfo.objects.filter(id=1)
# [ , ]
book = BookInfo.objects.get(bname__startswith=" ")
# ,
book = BookInfo.objects.get(bname__endswith=" ")
#
book = BookInfo.objects.filter(bname__contains=" ")
print(book)
#
# book = BookInfo.objects.filter(bname__isnull=False)
# print(book)
# 1, 3, 5
book = BookInfo.objects.filter(id__in=[1, 3, 5])
print(book)
# 3
book = BookInfo.objects.filter(id__gt=3)
print(book)
# 3
#book = BookInfo.objects.filter(id__gte=3)
print(book)
# 3
book = BookInfo.objects.exclude(id=3)
print(book)
# 1980
book = BookInfo.objects.filter(bdate__year=1980)
#
book = BookInfo.objects.filter(bdate__year__exact=1980)
print(book)
# 1980 1 1
# date
book = BookInfo.objects.filter(bdate__gt=date(1980, 1, 1))
print(book)
F 객체 및 Q 객체
F 객체 ----- 두 속성 간 비교 가능
# F
#
book = BookInfo.objects.filter(breaded__gte=F('bcomment'))
print(book)
# 2
# F
book = BookInfo.objects.filter(breaded__gt=F('bcomment')*2)
print(book)
# 2.1 id=1 , 1
# , id=1 ,
book = BookInfo.objects.get(id=1)
book.bcomment += 1
book.save()
# ,
book = BookInfo.objects.filter(id=1).update(bcomment=F('bcomment')+1)
print(book)
Q 개체
# , Q
# 20, 3 , Q
book = BookInfo.objects.filter(Q(breaded__gt=20) | Q(id__lt=3))
print(book)
# 3 , Q
# Q "~", , exclude
book = BookInfo.objects.filter(~Q(id=3))
print(book)
집합 함수
# - == = == ==
#
# aggregate (Sum,Avg,Count,Max,Min),
number = BookInfo.objects.aggregate(Sum('breaded'))
print(number)
#
number = BookInfo.objects.aggregate(Max('bcomment'))
print(number)
# , , [ ]
#
book = BookInfo.objects.all().order_by('breaded')
# "-",
book = BookInfo.objects.all().order_by('-breaded')
print(book)
# - == == == ==
# 1,
# relate_name , . _set.all()
book = BookInfo.objects.get(id=1)
hero = book.heroinfo_set.all()
# relate_name , . .all()
book = BookInfo.objects.get(id=1)
hero = book.hero.all()
print(hero)
# - 2.
# ,
book = BookInfo.objects.get(bname=" ")
hero = book.hero.all()
# hero = book.heroinfo_set.all()
print(hero)
# - 3.
# 1,
# , .
hero = HeroInfo.objects.get(id=1)
book = hero.hbook
print(book)
# - == = == ==
# ,
#
book = BookInfo.objects.filter(hero__hname=" ")
print(book)
# - 2.
#
book = BookInfo.objects.filter(hero__hname__contains=" ")
print(book)
# - 3.
# 30,
hero = HeroInfo.objects.filter(hbook__breaded__gt=30)
print(hero)
# 4 5
data = HeroInfo.objects.all()[:5]
print(data)
Query Set
콘셉트
양대 특성
사용자 정의 관리자
참고: 모델 클래스에 사용자 정의 필터를 지정하면 Django에서 기본 관리 객체 Objects를 생성하지 않습니다.
# , models.Manager
class BookInfoManager(models.Manager):
# all()
def all(self):
# False ( )
return super().filter(is_delete=False)
# ,
def create_book(self, bname, bdate):
book = self.model()
book.bname = bname
book.bdate = bdate
book.breaded = 0
book.bcomment = 0
book.is_delete = False
book.save()
return book
#
class BookInfo(models.Model):
...
books = BookInfoManager()
# == == #
#
book = BookInfo.books.all()
print(book)
# books objects
book = BookInfo.books.create_book(" ", date(2015, 5, 1))
print(book)
Admin 사이트
python manage.py createsuperuser
python manage.py changepassword
admin.site.register( )
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.