zoukankan      html  css  js  c++  java
  • Django 中orm的第一次举荐

    Django
    ORM :对象--关系--映射
    创建Django准备工作:
    1.在数据库创建你需要的数据库

    2.在项目models里创建模型(就是python写的类,也可以说是python写的数据库)
    class Book(models.Model):
    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)
    state=models.BooleanField()
    pub_date=models.DateField()
    price=models.DecimalField(max_digits=8,decimal_places=2)
    publish=models.CharField(max_length=32)

    3.setting配置操作(以前的DATABASES注释掉,拷贝下面代码上去)
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'bms',      # 要连接的数据库,连接前需要创建好
    'USER':'root',       # 连接数据库的用户名
    'PASSWORD':'',       # 连接数据库的密码
    'HOST':'127.0.0.1', # 连接主机,默认本级
    'PORT':3306     # 端口 默认3306
    }
    }

    4.在项目下__init__里添加下面这段代码:
    import pymysql
    pymysql.install_as_MySQLdb()

    5.以上4步完成之后数据库并没有你的表,我们还得进行数据库的迁移操作,在pycharm终端里直接输入
    1.python manage.py makemigrations #进行数据同步操作
    2.python manage.py migrate #进行python写的数据库编译成sql语句

    5.5 注意!为了确保INSTALLED_APPS中写入我们创建的app名称,我们的检查一下
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "book" #这个就是我们的项目数据库中表的名称
    ]

    6.这样,我们就可以创建成功了!前期的准备工作完成!


    单表操作:

    def addbook(request)

    方式一:
     Book.objects.create(title='python',price=100,publish="苹果出版社",pub_date="2012-12-12")

    方式二:
    book_obj = Book(title='python',price=100,publish="苹果出版社",pub_date="2012-12-12")
    book_obj.save()

    return HttpResponse('ok')



    直接查到你要删除的数据后边直接+delete() 例如:删除掉python数据
    ret = Book.objects.filter(title='python').delete() #没有返回值
    print(ret)



    查到你要修改的数据后边+update() 括号里写你要修改的数据,例如:把python价格修改成2000
    bookinfo= Book.object.filter(title='python')update(price=2000)
    print(bookinfo)



    1.all() 查询所有
    ret = Book.objects.all()
    print(ret)

    2.filter() 按照查询匹配的对象
    ret = Book.objects.filter(title='python')
    print(ret)

    3.get() 只能查到只有一个对象的数据,多个对象或者没有则直接报错
    ret = Book.objects.get(title='python')
    print(ret)

    4.exclude() 只要没有比配的都被查出来
    ret = Book.objects.exclude(title='python')
    print(ret)

    5.order_by() 对查询结果进行排序
    ret = Book.objects.filter(title='c#').order_by('-price') #c#这本书的排序就是price=200在前面

    6.reverse() 对查询结果进行反向排序,ord_by 需要加参数 reverse 则不需要
    ret=Book.objects.all().order_by('price').reverse()
    print(ret)


    7.first()
    ret = Book.objects.filter(title='python').last()
    print(ret)


    8.last()
    ret = Book.objects.filter(title='python').last()
    print(ret)


    9.count() 数数
    ret = Book.objects.filter(title='python').count()
    print(ret)


    10.exists() 如果jueryset 里有值就返回 True
    ret = Book.objects.exists()
    print(ret)


    11.values()返回的是一个queryset对象,里边是字典方式存储 [{'title': '四有青年'}, {'title': 'python'}...]
    ret = Book.objects.all().values('title')
    print(ret)


    12.values_list 返回的是一个queryset对象,里边是元组形式存储 [('四有青年',), ('python',)...]
    ret = Book.objects.all().values_list('title')
    print(ret)

    13.distinct 从返回的数据中除掉重复的数据<QuerySet [('中国青年报',), ('人民出版社',), ('人民日报',)]>
    ret = Book.objects.all().values_list('publish').distinct()
    print(ret)

    模糊查询


    1.price__in=[100,124,200,300] 在这里的都能被查到
    ret = Book.objects.filter(price__in=[100,124,200,300])
    print(ret)


    2.price__gt=200 大于价格200的书籍
    ret = Book.objects.filter(price__gt=200)
    print(ret)


    3.price__gt=200 小于价格200的书籍
    ret = Book.objects.filter(price__lt=200)
    print(ret)


    4.price__range=[100,500] 价格在100--500之间的书籍
    ret = Book.objects.filter(price__range=[100, 500])
    print(ret)

    5.title__contains='python' 查看python的书籍
    ret = Book.objects.filter(title__contains='java')
    print(ret)



    6.
    ret = Book.objects.filter(title__icontains='python')
    print(ret)


    7. 按照年查询 查询2018年10月份的书
    ret = Book.objects.filter(pub_date__year=2018,pub_date__month=10)
    print(ret)

  • 相关阅读:
    认识“委托”
    程序员的修炼之道:从小工到专家(一)
    知识的使用 与 知识的内化
    VB.Net中 Module 的前世今生
    memcached
    C#知识
    Android之垂直显示TextView
    Android开发之各个语言
    Android之hint提示字体大小修改,显示完全
    Android 之计算控件颜色透明度
  • 原文地址:https://www.cnblogs.com/lzqrkn/p/9858386.html
Copyright © 2011-2022 走看看