데이터베이스 작업의 ORM의 동작은 장고 장고 ORM 데이터베이스

A, ORM 소개

매핑 관계 :

  -------------------- 테이블 이름 "클래스 이름

  -------------------- 필드 "속성

  ----------------- 테이블 레코드 "개체 클래스 인스턴스

ORM 두 가지 주요 기능 :

  운영 테이블 :

    - 테이블 만들기

    - 수정 테이블

    - 테이블 삭제

  운영 데이터 라인 :

    - CRUD

ORM은 타사 도구 연결된 데이터베이스를 사용 pymysql

장고 그것은 단지 당신이 만든 후에 알려 장고 링크를 이동하도록 할 수 있습니다, 우리가 데이터베이스를 만들 수 없습니다

둘째, 테이블 전에 준비 작업을 생성

첫째, 자신의 데이터베이스를 생성

둘째, MySQL 데이터베이스 링크 내부의 구성 설정에

  sqlite3를 ------ 변경 mysql을

코드를 복사
# 기본 장고 sqlite3를 데이터베이스의 MySQL입니다 수정 
데이타베이스 = {
     ' 기본 ' {
             ' 엔진 ' : ' django.db.backends.mysql ' , # MySQL은이 링크를 통해 
            ' NAME ' : ' djangotsgl ' ,
             ' USER (사용자) ' : ' 루트 ' ,
             ' PASSWORD ' : ' 123456 ' ,
             ' # 스트 ' :' 로컬 호스트' ,
             ' PORT ' : ' 3306 ' , 
        } 
    }            
코드를 복사

  이 쓰기 장고가 기본 데이터베이스 링크로 이동합니다 후, 당신은 다음의 해결책이 아래에 오류가 표시됩니다

세 가지,이 app01 파일 --init--

수입 pymysql 
pymysql.install_as_MySQLdb ()

넷째, 데이터베이스 테이블을 생성

models.py

코드를 복사
클래스 도서 (models.Model)는 :   # 상속해야 
    NID = models.AutoField을 (primary_key와는 = 참)   #의 증가 ID는 (당신이 쓸 수, 기본값은 위의 ID를 언급 한 증가됩니다) 
    제목 = models.CharField (MAX_LENGTH = 32 ) 
    publishDdata models.DateField = ()는   # 게시 
    저자 = models.CharField (MAX_LENGTH = 32 ) 
    . 가격 = models.DecimalField (max_digits의 =. 5, DECIMAL_PLACES = 2)   #의 다섯 총, 두 소수점 이하 자릿수
    
코드를 복사

 만들 :( 기억해야 할 필요가 명령을 실행합니다!) 

python3의 manage.py의 makemigrations 스크립트 작성 
마이그레이션 마이그레이션 manage.py를 python3를

구체적으로 실현

model.py

urls.py

views.py

템플릿 /index.html를

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width">
 7     <title>Title</title>
 8     <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
 9     <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
10     <style>
11         table{
12             margin-top: 50px;
13         }
14     </style>
15 </head>
16 <body>
17 <div class="containers">
18     <div class="row">
19         <div class="col-md-9 col-md-offset-2">
20             <table class="table table-hover">
21                 <thead>
22                     <tr>
23                         <th>编号</th>
24                         <th>书名</th>
25                         <th>出版日期</th>
26                         <th>作者</th>
27                         <th>价钱</th>
28                         <th>操作</th>
29                     </tr>
30                 </thead>
31                 <tbody>
32                 {% for book in book_list %}
33                     <tr>
34                             <td>{{ book.nid }}</td>
35                             <td>{{ book.title }}</td>
36                             <td>{{ book.publishDdata|date:'Y-m-d' }}</td>
37                             <td>{{ book.author }}</td>
38                             <td>{{ book.price }}</td>
39                             <td>
40                                 <a href="/del/{{ book.nid }}"><button class="btn btn-danger">删除</button></a>
41                                 <a href="/edit/{{ book.nid }}"><button class="btn btn-success">编辑</button></a>
42                                 <a href="/add/"><button class="btn btn-primary">添加</button></a>
43                             </td>
44                     </tr>
45                 {% endfor %}
46                 </tbody>
47             </table>
48         </div>
49     </div>
50 </div>
51 </body>
52 </html>
图片内容具体,

 五、查看数据库的sql语句(加在settings.py)

코드를 복사
查看数据库执行代码
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}
코드를 복사

 

一、ORM介绍

映射关系:

  表名 --------------------》类名

  字段--------------------》属性

  表记录-----------------》类实例化对象

ORM的两大功能:

  操作表:

    - 创建表

    - 修改表

    - 删除表

  操作数据行:

    - 增删改查

ORM利用pymysql第三方工具链接数据库

Django没办法帮我们创建数据库,只能我们创建完之后告诉它,让django去链接

二、创建表之前的准备工作

一、自己创建数据库

二、在settings里面配置mysql数据库链接

  sqlite3------改为mysql

코드를 복사
# 修改django默认的数据库的sqlite3为mysql
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql', #通过这个去链接mysql
            'NAME': 'djangotsgl',
            'USER':'root',
            'PASSWORD':'123456',
            'HOST':'localhost',
            'PORT':'3306',
        }
    }            
코드를 복사

  这样写上以后django会默认的就去链接数据库,这时你会看到报错了,那么解决的办法就是下面的这样

三、app01中的--init--文件

import pymysql
pymysql.install_as_MySQLdb()

四、创建数据库表

models.py

코드를 복사
class Book(models.Model):  #必须要继承的
    nid = models.AutoField(primary_key=True)  #自增id(可以不写,默认会有自增id)
    title = models.CharField(max_length=32)
    publishDdata = models.DateField()  #出版日期
    author = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5,decimal_places=2)  #一共5位,保留两位小数
    
코드를 복사

 执行命令创建:(需要记住的!!!) 

python3 manage.py makemigrations   创建脚本
python3 manage.py migrate   迁移

具体例子实现

model.py

urls.py

views.py

template /index.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width">
 7     <title>Title</title>
 8     <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
 9     <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
10     <style>
11         table{
12             margin-top: 50px;
13         }
14     </style>
15 </head>
16 <body>
17 <div class="containers">
18     <div class="row">
19         <div class="col-md-9 col-md-offset-2">
20             <table class="table table-hover">
21                 <thead>
22                     <tr>
23                         <th>编号</th>
24                         <th>书名</th>
25                         <th>出版日期</th>
26                         <th>作者</th>
27                         <th>价钱</th>
28                         <th>操作</th>
29                     </tr>
30                 </thead>
31                 <tbody>
32                 {% for book in book_list %}
33                     <tr>
34                             <td>{{ book.nid }}</td>
35                             <td>{{ book.title }}</td>
36                             <td>{{ book.publishDdata|date:'Y-m-d' }}</td>
37                             <td>{{ book.author }}</td>
38                             <td>{{ book.price }}</td>
39                             <td>
40                                 <a href="/del/{{ book.nid }}"><button class="btn btn-danger">删除</button></a>
41                                 <a href="/edit/{{ book.nid }}"><button class="btn btn-success">编辑</button></a>
42                                 <a href="/add/"><button class="btn btn-primary">添加</button></a>
43                             </td>
44                     </tr>
45                 {% endfor %}
46                 </tbody>
47             </table>
48         </div>
49     </div>
50 </div>
51 </body>
52 </html>
图片内容具体,

 五、查看数据库的sql语句(加在settings.py)

코드를 복사
查看数据库执行代码
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
             ' 핸들러 ' : [ ' 콘솔 ' ,
             ' 전파 ' : 사실,
             ' 수준 ' : ' DEBUG를 ' , 
        } 
    } 
}
코드를 복사

 

추천

출처www.cnblogs.com/maaosheng/p/11621527.html