django的ORM操作
ORM
面向对象和关系型数据库一个映射 通过操作对象的方式数据库中的数据
映射关系:
类 _> 表
对象 _> 数据行 (记录)
属性 _> 字段
ORM能做的操作:
1. 操作数据表
2. 操作具体数据
django使用mysql数据库的流程:
1. 创建一个mysql数据库;
2. 配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 引擎 'NAME': 'py24', # 数据库名称 'HOST': '127.0.0.1', # IP 'PORT': 3306, # 端口 'USER': 'root', # 用户名 'PASSWORD': '', # 密码 } }
3. 告诉django使用pymysql模块连接mysql数据库
在与settings同级目录下的__init__文件中写:
import pymysql
pymysql.install_as_MySQLdb()
如果没有安装pymysql,使用pip install pymysql
如果报错如下:
打开:https://pypi.org/project/pip/
点击:
右击-链接另存为:
下载下来后,复制到python环境中:
按住shift+右键 在此处打开命令窗口。
4. 在app下的models.py中写类(models.Model):
class User(models.Model): #要继承models.Model name = models.CharField(max_length=32) # varchar(32) pwd = models.CharField(max_length=32) # varchar(32)
5. 执行数据库迁移的命令
python manage.py makemigrations # 保存每个APP下models的变更记录
python manage.py migrate # 将models的变更记录同步到数据库中
注意:python manage.py makemigrations:他会在你的上面每个app中的modules检查你是否有变化,你如果有变化,他都会把变化的内容存放到你自己的0001_initial.py中,如果你不注册这个app,那他就跳过了。
点击pycharm右面的database,选择链接mysql
第一次要下载这个驱动。
表的名字默认是app01_类名
出现这个才表示数据已经插入到数据库中。
那现在我们就不在写死了,我们要使用ORM去数据库里查询一下
from django.shortcuts import render, HttpResponse, redirect from app01 import models # Create your views here. def index(request): return HttpResponse('<h1>o98K</h1>') def login(request): err_msg = '' # print(request.method,type(request.method)) if request.method == 'POST': # 获取提交的数据 # print(request.POST) #这个是一个字典,如下:你可以用[]取值,你也可以用get 用get的好处是不会报错,并且你可以指定错误信息,如果报错默认是一个None user = request.POST.get('user') #获取输入的用户名 password = request.POST.get('pwd') #获取输入的密码 # print(user,type(user)) #alex # if user == 'alex' and pwd == 'alexdsb': print(models.User.objects.filter(name=user,pwd=password)) #<QuerySet [<User: User object>]> 这个是一个对象列表 if models.User.objects.filter(name=user,pwd=password): #models.User表示那个类 objects是固定的写法 filter表示你要在这个里面查询你符合条件的数据 name表示数据库的字段 user表示上面获取出来的用户名。 pwd表示数据库的字段 password表示上面获取的密码 # return redirect('https://www.baidu.com') return redirect('/index/') else: err_msg = '用户名或密码错误' return render(request, 'login.html', {'err_msg': err_msg})
作者:wangkaiok —— 小菜鸟111
出处:http://www.cnblogs.com/wangkaiok/
本文版权归作者和博客园共有,但未经作者同意禁止转载,转载必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。