orm系统的方法–通过封装 python代码----执行sql语句—操作数据库
1-什么是orm系统:
1.ORM概念:对象关系映射(Object Relational Mapping,简称ORM)
2.ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
2-django模型映射关系:
模型类 ------ 数据表
类属性------表字段名
注意:
1.在settings.py中配置DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'tab', #数据库名称
'USER': 'root', # 链接数据库的用户名
'PASSWORD': 'qwe123', # 链接数据库的密码
'HOST': '127.0.0.1', # mysql服务器的域名和ip地址
'PORT': '3306', # mysql的一个端口号,默认是3306
}
}
2-pymsql数据库连接器的配置:
在虚拟环境中安装pymysql:
pip install pymysql
设置连接器为pymysql:
在主目录下的的__init__.py文件添加下面两句
import pymysql
pymysql.install_as_MySQLdb()
对应APP下的modle.py文件下 创建模型类
class Tab(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
age = models.IntegerField()
sex = models.BooleanField(default=0)
def __str__(self):
return '姓名:%sname id:%s 年龄:%s 性别:%s'%(self.name,self.id,self.age,self.sex)
将模型类映射到数据库:
虚拟机下:
1.首先执行以下命令,要创建映射文件
python manage.py makemigrations
2.执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
或者直接在pycharm中创建映射文件:
将模型类映射到数据库:
注意:
打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.
from django.http import HttpResponse
from .models import Tab
def test(request):
#增加数据
#方法一
#t = Tab.objects.create(name='邓紫棋',age=18)
# 方法二
t = Tab.objects.get_or_create(name='周杰伦', age=28,sex=1)
#方法三
t = Tab()
t.name='林俊杰'
t.age=30
t.sex=1
t.save()
#方法四
t = Tab(name='五月天', age=32,sex=1)
t.save()
return HttpResponse(123)
#查找数据
#查询所有
t = Tab.objects.all()
print(t)
#查询单独对象
t = Tab.objects.get(name='周杰伦')
print(t)
#查询满足条件的对象
t = Tab.objects.filter(sex=1)
print(t)
return HttpResponse(123)
注意:
all()和filter()方法返回的是QuerySet对象.
get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!
1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.
2.QuerySet是可迭代对象.
3.QuerySet支持切片, 不支持负索引.
4.可以用list强行将QuerySet变成列表.
#修改数据
#直接修改
t = Tab.objects.filter(name='周杰伦').update(name='林宥嘉')
print(t)
#找到这个对象后 再修改
t = Tab.objects.get(age=18)
t.name = '王力宏'
t.save()
print(t)
return HttpResponse(123)
#删除数据
#删除单个对象
# t = Tab.objects.get(id =1).delete()
# print(t)
# t = Tab.objects.filter(id=2).delete()
# print(t)
#删除所有
t = Tab.objects.all().delete()
print(t)
from django.shortcuts import render
from django.http import HttpResponse
from .models import Tab
def test(request):
'''#增加数据
#方法一
#t = Tab.objects.create(name='邓紫棋',age=18)
# 方法二
t = Tab.objects.get_or_create(name='周杰伦', age=28,sex=1)
#方法三
t = Tab()
t.name='林俊杰'
t.age=30
t.sex=1
t.save()
#方法四
t = Tab(name='五月天', age=32,sex=1)
t.save()'''
'''#查找数据
#查询所有
t = Tab.objects.all()
print(t)
#查询单独对象
t = Tab.objects.get(name='周杰伦')
print(t)
#查询满足条件的对象
t = Tab.objects.filter(sex=1)
print(t)'''
#修改数据
#直接修改
'''t = Tab.objects.filter(name='周杰伦').update(name='林宥嘉')
print(t)
#找到这个对象后 再修改
t = Tab.objects.get(age=18)
t.name = '王力宏'
t.save()
print(t)'''
#删除数据
#删除单个对象
# t = Tab.objects.get(id =1).delete()
# print(t)
# t = Tab.objects.filter(id=2).delete()
# print(t)
#删除所有
t = Tab.objects.all().delete()
print(t)
return HttpResponse(123)