Django - ORM数据库操作 - 表结构、单表操作

本文详细介绍了Django的ORM操作,包括如何创建和修改表结构,如增加、删除和修改字段,以及各种字段类型和参数。此外,还讲解了单表记录操作,如查询、增加、修改和删除记录的方法,如filter、values、create、update和delete等。
摘要由CSDN通过智能技术生成

目录

一、ORM (对象关系映射 Object Relational Mapping)

二、表结构的创建和修改

 1、表结构的创建

1-1 setting内建立数据库连接

1-2 models.py 内创建模型

1-3 migrations 内 __init__.py文件修改

1-4 迁移命令的两种执行方式

2、表结构的修改

2-1 增加字段

2-2 删除字段

2-3 修改字段

3、模型内字段类型

4、字段参数

5、元信息

三、单表记录操作

1、在py文件中调用Django环境(可用于orm记录操作语言的测试)

2、查(API)

-  filter() - 返回queryset对象

- 基于filter的双下划线模糊查询

- values(*field):返回特殊的queryset类型

3、增(两种方式)

方式一、create方法创建记录对象

方式二、创建对象,save方法保存

4、改(两种方式)

1、方式一:update()方法

2、方式二、修改对象,save 保存

5、删(delete())

1、所有对象删除

2、根据记录删除


一、ORM (对象关系映射 Object Relational Mapping)

介绍:对pymysql模块的二次封装,进行操作mysql

优点:

  1. 提高了开发效率
  2. 可以使用代码创建表、并对表进行增删改查操作

缺点:

  1. 降低了执行效率
  2. 不可以自主创造数据库

二、表结构的创建和修改

 

 1、表结构的创建

1-1 setting内建立数据库连接

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lqz',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'ATOMIC_REQUEST': True,
        'OPTIONS': {
            "init_command": "SET storage_engine=MyISAM",
        }
    }
}

'''
'NAME':要连接的数据库,连接前需要创建好
'USER':连接数据库的用户名
'PASSWORD':连接数据库的密码
'HOST':连接主机,默认本机
'PORT':端口 默认3306
'ATOMIC_REQUEST': True,
设置为True统一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。
是全局性的配置, 如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器 
'OPTIONS': {
             "init_command": "SET storage_engine=MyISAM",
            }
设置创建表的存储引擎为MyISAM,INNODB
'''

1-2 models.py 内创建模型

from django.db import models

# 一个类就是一个表
class User(models.Model):
    # 自增int类型,是主键
    id = models.AutoField(primary_key=True)
    # name 是一个varchar类型,长度是32
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

1-3 项目 内 __init__.py文件修改

注意:

  • 若只是在app文件夹下的init文件添加,则只能当前app内使用mysqldb
  • 若在总项目文件夹下的init文件中添加,所有app的数据库都使用mysqldb
import pymysql
pymysql.install_as_MySQLdb()

1-4 迁移命令的两种执行方式

  •  方式一、终端命令
    python3 manage.py makemigrations  --- 记录数据库的修改记录
    python3 manage.py migrate ---- 数据修改同步数据库
  • 方式二、pycharm工具栏操作
    工具栏 -- tools--->Run manage.py Task
    makemigrations
    migrate
  • 注意:

         1 数据库迁移记录都在 app01下的migrations里
            2 使用showmigrations命令可以查看没有执行migrate的文件(python manage.py showmigrations)

            3  makemigrations是生成一个文件,migrate是将更改提交到数据量

 

2、表结构的修改

2-1 增加字段

from django.db import models

# 一个类就是一个表
class User(models.Model):
    # 自增int类型,是主键
    id = models.AutoField(primary_key=True)
    # name 是一个varchar类型,长度是32
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

    # 在原有结构上添加字段,必须带有默认值
    phone=models.CharField(max_length=64,default='120')

2-2 删除字段

from django.db import models

# 一个类就是一个表
class User(models.Model):
    # 自增int类型,是主键
    id = models.AutoField(primary_key=True)
    # name 是一个varchar类型,长度是32
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

    # 在原有结构上注释字段
    # phone=models.CharField(max_length=64,default='120')


''' 文件修改完成,执行两句迁移命令 '''

2-3 修改字段

from django.db import models

# 一个类就是一个表
class User(models.Model):
    # 自增int类型,是主键
    id = models.AutoField(primary_key=True)
    # name 是一个varchar类型,长度是32
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

    # 在原有结构上修改结构内容
    phone=models.CharField(max_length=64,default='11111111111')


''' 文件修改完成,执行两句迁移命令 '''

 

3、模型内字段类型

  • AutoField(Field) - int自增列,必须填入参数 primary_key=True
  • BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True
    //注:当model中如果没有自增列,则自动会创建一个列名为id的列
    from django.db import models
    
    class UserInfo(models.Model):
        # 自动创建一个列名为id的且为自增的整数列
        username = models.CharField(max_length=32)
    
    class Group(models.Model):
        # 自定义自增列
        nid = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)

     

  • mallIntegerField(IntegerField): - 小整数 -32768 ~ 32767

  • PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) - 正小整数 0 ~ 32767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值