码迷,mamicode.com
首页 > 其他好文 > 详细

django之ORM

时间:2019-07-16 00:33:23      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:update   创建   密码   属性   导入   python3   too   mys   delete   

ORM配置

技术图片
"""
1、创建数据库
2、配置mysql的数据库链接
    setting文件里的DATABASES设置为
    DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘: ‘s8day61‘,    ## 数据库名称
        ‘USER‘: ‘root‘,
        ‘PASSWORD‘: ‘123‘,    ## 安装 mysql 数据库时,输入的 root 用户的密码
        ‘HOST‘: ‘127.0.0.1‘,
    }
3、注册app
    也是在settings文件中的INSTALLED_APPS
    把你的app文件名加进去
4、需要把mysqldb设置为pymysql链接
    python3中用的是pymysql
    python2中使用的是mysqldb
    
    为了兼容,都改成pymysql
    app下的__init__文件
        import pymysql
        pymysql.install_as_MySQLdb()
5、创建表(2个命令)
    
    python manage.py makemigrations
    
    python manage.py migrate

"""
技术图片

单表的增删改查

技术图片
# 先导入models文件
from class_app import models

# 增
models.Classes.objects.create(name="xxx")
# 增加会有一个返回值,这个返回值就是这次插入的对象

# 查
# 查出所有对象    ==> 列表里套对象
models.Classes.objects.all()
# 查出单个对象    ==> 取第一个对象
models.Classes.objects.first()
# 也可以
models.Classes.objects.all().first()
# 过滤查询
models.Classes.objects.filter(name="xxx").all()

# 删
models.Classes.objects.filter(name="xxx").delete()

# 改
models.Classes.objects.filter(name="xxx").update(name="ooo")
# 如果需要改的值很多,并且在一个字典里,也可以用**打散
models.Classes.objects.filter(name="xxx").update(**dic)
技术图片

django中orm的表的正查与反差

技术图片
# 如果一张表和其他的表建有外键关系,那么从这张表查另一张表称为正查,反之称为反差
# 先建立两个外键关系的表
class Classes(models.Model):    # 如果我们不设置一张表的id时,django会自动帮我创建一个自增的主键id
    name = models.CharField(max_length=32,null=True)

class Students(models.Model):
    name = models.CharField(max_length=32,null=True)
    cid = models.ForeignKey("Classes",null=True)    # 会自动帮我们和另一张表的主键建立外键关系

# 正查
for obj in students:
    print(obj.cid.name)     # 可以直接通过对象点里面的属性就可以点出另一个类的对象,可以继续取值

# 反查
obj.student_set.all()       # 就是查出所有的对象

# 还可以通过下划线直接取到另一张表的值
# values是取出括号里对应的值,通过列表里套字典的形式
# values_list 是取出括号里对应的值, 通过列表里套元组的形式
models.Classes.objects.values("id","name","cid__name").all()
技术图片

双下划线

技术图片
# 查询时通过外键名__另一张表的名字  可以查到关联表的值
# eg:
models.Classes.objects.values("id","name","cid__name").all()    #这个cid__name可以查询到关联表对应的name
# 查询时可以在filter中加入限制条件  __lt 代表小于  __gt代表大于
# eg:
models.Classes.objects.filter(id__lt = 3).all()     # id < 3
models.Classes.objects.filter(id__gte = 3).all()    # id >= 3
技术图片

 

django之ORM

标签:update   创建   密码   属性   导入   python3   too   mys   delete   

原文地址:https://www.cnblogs.com/jixu/p/11192369.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!