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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、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

世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值