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를
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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를 ' , } } }