WeChat Mini 프로그램 개발 (5) Django Framework 데이터베이스 사용

WeChat Mini 프로그램 개발 (5) Django Framework 데이터베이스 사용

Django는 PostgreSQL, MySQL, SQLite, Oracle을 포함한 다양한 데이터베이스에 대한 훌륭한 지원을 제공합니다.
Django는 이러한 데이터베이스에 대한 통합 호출 API를 제공합니다. 비즈니스 요구에 따라 다른 데이터베이스를 선택할 수 있습니다.
MySQL은 웹 애플리케이션에서 가장 일반적으로 사용되는 데이터베이스입니다.
Django ORM
Django 모델은 자체 ORM을 사용합니다.
객체 관계형 매핑 (ORM)은 객체 지향 프로그래밍 언어에서 서로 다른 유형의 시스템간에 데이터 변환을 구현하는 데 사용됩니다.
ORM은 비즈니스 로직 계층과 데이터베이스 계층 사이의 다리 역할을합니다.
ORM은 개체와 데이터베이스 간의 매핑을 설명하는 메타 데이터를 사용하여 프로그램의 개체를 데이터베이스에 자동으로 유지합니다.
여기에 사진 설명 삽입

使用 ORM 的好处:
提高开发效率。
不同数据库可以平滑切换。
使用 ORM 的缺点:
ORM 代码转换为 SQL 语句时,需要花费一定的时间,执行效率会有所降低。
长期写 ORM 代码,会降低编写 SQL 语句的能力。
ORM 解析过程:
1、ORM 会将 Python 代码转成为 SQL 语句。
2、SQL 语句通过 pymysql 传送到数据库服务端。
3、在数据库中执行 SQL 语句并将结果返回。

ORM 대응 테이블 :
여기에 사진 설명 삽입
데이터베이스 구성
Django mysql 데이터베이스를 사용하여 MySQL 데이터베이스를 만드는 방법
(ORM은 데이터베이스 수준에서 작동 할 수 없으며 데이터 테이블에서만 작동 할 수 있음) 구문 :

create database 数据库名称 default charset=utf8; # 防止编码问题,指定为 utf8

utf8로 지정된 인코딩을 사용하여 runoob라는 데이터베이스를 만듭니다.

create database runoob default charset=utf8;  

포트 3306을 엽니 다.
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기에 사진 설명 삽입
데이터베이스를 설정 한 후 프로젝트의 settings.py 파일에서 DATABASES 구성 항목을 찾고 해당 정보를 다음과 같이 수정합니다.

DATABASES = {
    
     
    'default': 
    {
    
     
        'ENGINE': 'django.db.backends.mysql',    # 数据库引擎
        'NAME': 'runoob', # 数据库名称
        'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 
        'PORT': 3306, # 端口 
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'xulei111', # 数据库密码
    }  
}

여기에 사진 설명 삽입
Python2.x 버전을 사용하는 경우 여기에 중국어 주석이 추가되므로 HelloWorld / settings.py 파일 헤드에 # --coding : UTF-8-- 을 추가해야합니다 .
위는 MySQL의 해당 데이터베이스 및 사용자 설정과 동일한 데이터베이스 이름 및 사용자 정보를 포함합니다. 이 설정을 기반으로 Django는 MySQL의 해당 데이터베이스 및 사용자와 연결합니다.
다음으로 Django에게 pymysql 모듈을 사용하여 mysql 데이터베이스에 연결하도록 지시합니다.

# 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置
import pymysql
pymysql.install_as_MySQLdb()

Django는 모델을 사용하려면 앱을 만들어야한다고 규정합니다. 다음 명령을 사용하여 TestModel 앱을 만듭니다.

django-admin startapp TestModel
目录结构如下:

HelloWorld
|-- HelloWorld
|-- manage.py
...
|-- TestModel
|   |-- __init__.py
|   |-- admin.py
|   |-- models.py
|   |-- tests.py
|   `-- views.py

여기에 사진 설명 삽입
TestModel / models.py 파일을 수정합니다. 코드는 다음과 같습니다.

# models.py
from django.db import models
 
class Test(models.Model):
    name = models.CharField(max_length=20)

여기에 사진 설명 삽입
위의 클래스 이름은 데이터베이스 테이블 이름을 나타내고 models.Model을 상속합니다. 클래스의 필드는 데이터 테이블의 필드 (이름)를 나타냅니다. 데이터 유형은 CharField (varchar에 해당), DateField (datetime에 해당), max_length입니다. 매개 변수는 길이를 제한합니다.
다음으로 settings.py에서 다음과 같이 INSTALLED_APPS 항목을 찾습니다.

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'TestModel',     #这里是要添加的部分
]
$ python manage.py migrate   # 创建表结构
$ python manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel   # 创建表结构

하지만 첫 번째 단계에서 오류가 발생했습니다.
여기에 사진 설명 삽입
종속성을 다운로드 (수동으로 whl 다운로드)
여기에 사진 설명 삽입
하고
여기에 사진 설명 삽입
여기에 설치 하십시오. 성공적으로 설치했습니다. 문제가 있으면 함께 해결할
여기에 사진 설명 삽입
있습니다. 그런 다음 mysqlclient를 계속 업데이트하고
여기에 사진 설명 삽입
확인하십시오. 오류가 계속보고됩니다, giao!
그런 다음 다음 두 줄의 코드를 주석 처리
여기에 사진 설명 삽입
하여 명령 줄 에서 실행할 있습니다.

$ python3 manage.py migrate   # 创建表结构
$ python3 manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更
$ python3 manage.py migrate TestModel   # 创建表结构

테이블 이름의 구조는 다음과 같습니다. 애플리케이션 이름 _ 클래스 이름 (예 : TestModel_test).
참고 : 모델에서 테이블에 대한 기본 키를 설정하지 않았지만 Django는 자동으로 ID를 기본 키로 추가합니다.

다음으로 HelloWorld 디렉토리에 testdb.py 파일을 추가하고 urls.py를 수정합니다.

from django.urls import path
 
from . import views,testdb
 
urlpatterns = [
    path('runoob/', views.runoob),
    path('testdb/', testdb.testdb),
]
from django.http import HttpResponse
 
from TestModel.models import Test
 
# 数据库操作
def testdb(request):
    test1 = Test(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")

여기에 사진 설명 삽입
데이터
가져 오기 Django는 다음 코드와 같이 데이터베이스의 콘텐츠를 가져 오는 다양한 방법을 제공합니다.

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="runoob").order_by("id")
    
    # 输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")

데이터 업데이트 데이터를
수정 하려면 save () 또는 update ()를 사용할 수 있습니다.

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 = 'Google'
    test1.save()
    
    # 另外一种方式
    #Test.objects.filter(id=1).update(name='Google')
    
    # 修改所有的列
    # Test.objects.all().update(name='Google')
    
    return HttpResponse("<p>修改成功</p>")

데이터
삭제 데이터베이스에서 객체 삭제하려면 객체의 delete () 메서드 만 호출하면됩니다.

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>")

추천

출처blog.csdn.net/xulei1132562/article/details/113567620