zoukankan      html  css  js  c++  java
  • ORM

    优势:开发效率高
    劣势:损失一部分性能
    ORM语法:
         1.操作数据表   增删改
         2.操作数据行   增删改查

    Django使用ORM连接数据库
      1. 先自己创建一个数据库
      2. 告诉Django连哪个库
      3. 创建表
      app/models.py写一个类
      注意:要继承mdoels.Model

      4. 使用pymysql这一类模块去真正连接MySQL
      Python2:mysqlDB
      python3:pymysql

      在项目文件夹下的__init__.py文件中写下:
      import pymysql
      pymysql.install_as_MySQLdb()
      5. 两个命令
      python manage.py makemigrations # 用小本本记录models.py中的改动
      python manage.py migrate # 把改动翻译成SQL语句,然后执行

    对应关系:

    类 --> 表

    属性 --> 字段

    对象 --> 数据行

    操作数据行的语法:
      1. 增加
      Student.objects.create(name="lucifer") -> 创建了一个Student对象

      insert into student(name) values("lucifer");

      2. 删除
      obj.delete()

      3. 改
      obj.name = "新的值"
      obj.save() 提交到数据库

      4. 查
      1. 获取单个数据(对象)
      Student.objects.get(id=1)
      2. 获取所有
      Student.objects.all()

    使用ORM连接MySql的步骤:

    1. 手动创建数据库
    2. 在settings.py里面配置一下数据库连接信息
      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.mysql',
              'NAME': 'book',
              'USER':'root',
              'PASSWORD':'123456',
              'HOST':'127.0.0.1',
              'PORT':3307
          }
      }
    3. 在和settings.py的同级目录下的__init__.py文件中,告诉Django用pymysql代替MySQLdb来连接数据库
      import pymysql
      pymysql.install_as_MySQLdb()
    4. 在app/models.py中,定义类,类一定要继承models.Model
      class books(models.Model):
          id=models.AutoField(primary_key=True)
          title=models.CharField(max_length=64,null=False,unique=True)
          publisher=models.ForeignKey(to='publisher')
    5. 执行两条命令(执行位置:项目根目录)
      python manage.py makemigrations
      #将model.py的改动记录在app/migrations/文件中
      python migrate
      #将改动翻译成sql,去数据库中执行

    自定义char类型

    class FixedCharField(models.Field):
        """
        自定义的char类型的字段类
        """
        def __init__(self, max_length, *args, **kwargs):
            super().__init__(max_length=max_length, *args, **kwargs)
            self.length = max_length
    
        def db_type(self, connection):
            """
            限定生成数据库表的字段类型为char,长度为length指定的值
            """
            return 'char(%s)' % self.length
    
    
    class Class(models.Model):
        id = models.AutoField(primary_key=True)
        title = models.CharField(max_length=25)
        # 使用上面自定义的char类型的字段
        cname = FixedCharField(max_length=25)
  • 相关阅读:
    移动端Web前端注解
    Atom 必备插件
    Gulp 前端自动化构建
    RESTful API 设计
    Cookie 的 增删查
    三步实现 AngularJS URL 去 # 号
    AngularJS $http 之 POST 传参
    Angular.JS中使用$watch监听模型变化
    AngularJS $apply() 解析
    [个人笔记]IDEA+MAVEN+testNG(reportNG)
  • 原文地址:https://www.cnblogs.com/Lucifer77/p/10317727.html
Copyright © 2011-2022 走看看