zoukankan      html  css  js  c++  java
  • Django框架之ORM对表结构操作

    ORM的优点:(1)简单,不用自己写SQL语句

           (2)开发效率高

    ORM的缺点:对于不同的人写的代码,执行效率有差别

    ORM的对应关系:

      类  ----------》  数据表

      对象-----------》数据行

      属性-----------》字段

    ORM能做的事:

    (1)操作数据表 --》创建表/删除表/修改表

    (2)操作数据行 --》数据的增删查改

    但是ORM不能创建数据库,需要自己动手创建数据库

    使用Django中的ORM详细步骤:

    1.手动创建数据库

    2.在Django项目中设置连接数据库的相关配置(告诉Django连接哪个数据库)

    3.Django框架中用pymysql代替默认的MySQLDB连接MySQL数据库

    4.在app下面的models.py文件中定义一个类,这个类必须继承models.Model

    5.执行两个命令

    (1)python3 manage.py makemigrations

    (2)python3 manage.py migrate

    具体实现如下:

    1.手动创建数据库

    2.在Django项目中设置连接数据库的相关配置(告诉Django连接哪个数据库)

    在项目同名文件夹中的settings.py文件中找"DATABASES"一个变量,配置如下:

    # 数据库相关配置
    DATABASES = {
        'default': {
            # 连接数据库类型
            'ENGINE': 'django.db.backends.mysql',
            # 连接数据库地址
            'HOST':'127.0.0.1',
            # 端口
            'PORT':3306,
            # 数据库名称
            'NAME':'oldboy',
            # 用户
            'USER':'root',
            # 密码
            'PASSWORD':'123456',
        }
    }

     3.Django框架中用pymysql代替默认的MySQLDB连接MySQL数据库

    在项目同名文件夹的__init__.py中添加如下:

    import pymysql
    # 告诉Django用pymysql来代替默认的MySQLDB,因为Mysqldb是支持python2,不支持python3
    pymysql.install_as_MySQLdb()

    4.在app下面的models.py文件中定义一个类,这个类必须继承models.Model

    ORM相关的只能写在这个文件里,写到别的文件里Django找不到

    from django.db import models
    
    # Create your models here.
    
    class UserInfo(models.Model):
        id=models.AutoField(primary_key=True) # 创建一个自增的主键字段
        name=models.CharField(null=False,max_length=20) # 创建一个varchar类型的不能为空的字段,其中最大长度必须设置

    5.执行两个命令

    (1)python manage.py makemigrations

    (2)python manage.py migrate

    数据库中创建表的结果如下:

    命令1:python manage.py makemigrations  将models.py里面的改动记录到对应模块里的migrations文件夹下面,例如:app02/migrations下

    命令2:python manage.py migrate  把改动翻译成SQL语句去数据库执行

     通过以上步骤,实现了通过ORM对表的创建,如果修改表结构的话,将对应表的类进行修改,重新运行两个命令即可。

  • 相关阅读:
    Nbear实体和接口 CodeSmith模版
    prototype1.4版中文参考手册(word,pdf,chm)
    SharePoint 2013 (SharePoint 15)的新特性
    没有域环境下安装SharePoint 2010
    产品经理(PM)常用原型图设计工具
    【转贴】mysql导入数据load data infile用法
    重新学javaweb!
    关于HIbernate中的lazy属性的一些解释
    JAVA程序员基本测试题目
    添加sql server约束
  • 原文地址:https://www.cnblogs.com/fjiqiang/p/10863778.html
Copyright © 2011-2022 走看看