Python后台开发(第二章: 模型类实现)
1 ORM原理与数据库配置
1.1 模块安装
代码部分:
pip install pymysql pip install mysqlclient
1.2 模块安装常见问题
- time out 超时解决方案: pip install 包名 --user-i https://pypi.tuna.tsinghua.edu.cn/simple
- 缺少c ++ 插件解决方案:https://www.jb51.net/article/151033.htm
1.3 Pycharm连接 Mysql
- 保证pycharm是专业版.
- 创建mysql连接.
- 测试连接,当出现successful时,说明连接信息无误,可以正常使用pycharm操作mysql数据库.
- 连接数据库可能遇到的问题:
pymysql.err.OperationalError: (1045, "Access denied for user'root'\@'localhost' (using password: YES/NO)")
- 解决方案: 检查Pycharm使用的账号密码,与cmd下登录Mysql数据库的账号密码是否一致.
unrecognized or represents more than one time zone. You must configureeither the server or JDBC driver (via the serverTimezone configurationproperty) to use a more specifc time zone value if you want to utilize timezone support. 时区错误
- 解决方案:
- cmd下 执行mysql_upgrade -uroot -p --force
- 重启mysql服务
- 进入mysql
- set global time_zone = ‘+8:00’;
- flush privileges ;
- show variables like ‘’%time_zone%’’ ;
1.4 Pycharm—数据库创建
创建命令如下:
Create database [数据库名] charset=’utf8’;
注:
- 使用pycharm创建数据库的时候一定要注意: 声明utf8字符集
- 选中需要执行的sql语句,使用 ctrl+enter执行该语句.
1.5 ORM框架原理
- django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。
- ORM在项目与数据库之间起桥梁作用,使用PyMySQL和mysqlclient连接Mysql数据库的接口。
- 在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。例如:模型类BookInfo–映射到–> 数据表bookinfo。使数据库设计更加简单
- ORM框架可以根据我们设计的类自动帮我们生成数据库中的表格,省去了我们自己建表的过程,也就是我们下边提到的数据库迁移操作.
- 用面向对象的方式去操作数据库的创建表、增加、修改、删除、查询等操作。把面向对象中的类和数据库表一一对应,通过操作类和对象,对数据表实现数据操作,不需要写sql,由orm框架生成。
- Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite…,如果数据库迁移,只需要更换Django的数据库引擎即可
1.6 数据库信息配置
- 默认情况下,配置使用SQLite。若不使用SQLite作为数据库,则需要额外的设置
- 其中ENGINE设置为数据库后端使用。内置数据库后端有:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
注:在实际的开发项目中,多数情况下使用的是Mysql数据库引擎.
- Mysql数据库引擎的配置:
在主路由的settings.py文件中, 通过DATABASES项进行数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydemo',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306', } }
- 数据库连接字段说明:
字段 | 说明 |
---|---|
NAME | 使用得数据库数据库名称 |
USER | 数据库登录用的账户 |
PASSWORD | 数据库登录用的密码 |
HOST | 数据库服务器的位置,我们一般数据库服务器和客户端都是在一台主机上面,所以一般默认都填127.0.0.1或者localhost |
PORT | 数据库启动的端口号 |
字段 | 说明 |
NAME | 使用得数据库数据库名称 |
USER | 数据库登录用的账户 |
- start—数据库信息快捷键的配置
- 打开pycharm的设置文件
- 跳转到快捷键配置界面
注: 搜索框搜索 live —> 点击Python的小箭头 --点击+号 —选择live template
- 配置快捷键信息
注: 配置完成,点击OK ,在settings中使用start进行测试使用.
2 Model模型层
2.1 Model 概述
- 在Django中model是你数据的单一、明确的信息来源。它包含了你存储的数据的重要字段和行为。通常,一个模型类(model)映射到一个数据库表。
- 定义简介:
- 每个模型都是一个python类,它是django.db.models.Model的子类
- 模型的每个属性都代表一个数据库字段
- 综上所述,Django为您提供了一个自动生成的数据库访问API,详细见官方文档。
- model与数据库结构对应关系图如下:
2.2 快速入门
下面举类详细分析model如何创建类,及各个语法的意义,如定义一个Person模型,包含两个属性first_name和last_name.
from django.db import models class Person(models.Model):
#每个类都必须继承models.Model
first_name = models.CharField(max_length=