• ORM


    0.Django项目创建步骤.

      1.创建项目和创建APP

      2.配置settings.py

        1.STATIC_URL = '/static/'  --> 默认配置好的

        2.STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')] 

          --->在项目的目录下创建一个存放静态文件的文件夹:static

        3.注释掉csrf相关的哪一行

        4.配置好数据库的连接的信息

        5.在INSTALLED_APPS =[

          ...

          '自己注册的APP']

    1.ORM (对象关系映射)  很多语言的很多web框架中都有这个概念

    2.为什么要有ORM?

      1.写程序离不开数据.

      2.在python程序中要用到数据库中的数据怎么办?

        1.使用pymysql连接MySQL数据库的步骤

          1.import pymysql

          2.建立连接
            
    conn = pymysql.connect(
    host = '127.0.0.1',
    port =  3360,
    database = 'db1',
    user = 'root',
    password = '123',
    charset = 'utf8',
    )
    

          3.获取光标对象

            cursor = conn.cursor()  -->默认返回[(),()]

            cursor = conn.cursor(cursor=pymysql.cursors.DictCurssor)  -->默认返回[{},{}]

          4.执行SQL语句

            sql = select * from user where name = %s and age = %s;

            cursor.execute(sql,['liming',18])

          5.获取结果

            1.cursor.fetchone()

            2.cursor.fetchall()

            3.cursor.fetchmany(n)  

      2.ORM

        1.新的语法,不需要我们自己写SQL语句

        2.我们要按照新的语法写代码,他帮我翻译成SQL语句

        3.优点:开发效率高,容易移植,容易掌握

        4.缺点:代码执行效率相对低

      3.ORM重点

        类  <-->  数据表

        属性 <-->  字段

        对象 <-->  数据行

    3.如何使用ORM

      1.ORM能帮助我们做什么事情?

        1.操作数据表

        2.操作数据行

      2.Django在ORM中如何使用?

        1.告诉Django框架连接那个数据库  --> 在setting.py文件下的DATABASES下配置所有与数据库相关的配置        

    DATABASES = { #default是默认的数据库
        'default': {
            'ENGINE': 'django.db.backends.mysql',#告诉Django要连接的是MySQL数据库
            'NAME': 'db1',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER':'root',
            'PASSWORD':'123',
        }
    }
    

        2.告诉Django框架使用什么连接数据库

          在setting.py的同级目录下的__init__.py文件中导入:import pymysql      pymysql.install_as_MySQLdb()

          告诉django框架使用pymysql 代替pymysql.install_as_MySQL()

        3.在app下面的models.py这个文件中定义类   

    class UserInfo(models.Model):
        id = models.AutoField(primary_key=True) #在数据库中生成自增的ID主键字段
        username = models.CharField(max_length=20) #varchar(20)
        password = models.CharField(max_length=30)
    
    #生成的表:表名UserInfo,表中有三个字段:ID,username,password
    

        4.告诉Django在数据库中生成表,两个命令

          1.python manage.py makemigrations     #到model.py下查看里面内容的变动,并在migrations文件夹下生成一个变动的记录

          2.python manage.py migrate  # 到migrations文件夹下查看变动记录,并翻译成SQL语句执行

          3.两条命令生成的表中,auth与django开头的表都是内置的表,app前缀开头的就是我们创建的

    4.ORM表单的查增删改

      1.查

        1.类名.objects.all()  -->查询数据库中改表的所有数据

        2.类名.objects.filter(条件)  -->根据给定的条件,取数据库查询,返回的是一个列表

        3.类名.objects.get(条件)  -->根据条件找到一个对象(找到多个或者没有时会报错)

      2.增

        1.类名.objects.create()

      3.删

        1.类名.objects.filter(条件).delete()

        2.类名.objects.get(条件).delete()

      4改

        1.obj = 类名.objects.get(条件)

           obj.属性 = '新值'

           obj.save()

        2.update

         类名.objects.filter(条件).update(字段='新值')

  • 相关阅读:
    如何快速搞定websocket
    websocket断网消息补发
    div嵌套多个点击事件,点击后如何阻止多次事件触发冒泡
    仿照 MediatR实现了一个中介者模式Publish功能,使用同MediatR
    git提交指南(超级详细)
    删除github中的文件夹
    抽取进程集成模式注册报错,OGG-08221,OCI Error ORA-44004 invalid qualified SQL Name
    Oracle-参数学习_no_or_expansion
    OGG19版本源端新增字段,目标端复制进程不报错,使用MAPALLCOLUMNS进行测试
    Oracle存储过程如何定位慢SQL?
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9858880.html
Copyright © 2020-2023  润新知