首页 > 数据库 >03- 配置数据库

03- 配置数据库

时间:2023-01-04 15:34:56浏览次数:49  
标签:03 models PrettyNum 数据库 配置 filter objects data id

1. 配置数据库

# 1. 安装第三方模块
      pip install mysqlclient
 
# 2. django连接数据库
            在项目中的settings.py中配置
             将:
                DATABASES = {'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': BASE_DIR / 'db.sqlite3',}}
             修改为:
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql', # 修改为mysql
                        'NAME': "dbname",  # 数据库名字
                        "USER": "ROOT",  # 用户名
                        "PASSWORD": "XXX",  # 密码
                        "HOST": "",  # ip
                        "PORT": ""  # 端口 }}

2. 数据库表结构

# 类型:
        AutoField: 整形
        IntegerField: 整形
        SmallIntegerField: 小整数
        CharField: 字符串
        DecimalField: 小数
        DateTimeField: 时间
 
# 属性:
       primary_key=True 主键自增
       verbose_name="ID" : 备注
       max_digits=10: 数字总长10位
       decimal_places=2, # 小数后两位
       default=0 # 默认值
 
# 约束:
      # 约束,只能与另一张表中已存在的id
      # -to: 与那张表关联; -to_fields: 与表中的那一列关联
      # 2.1 django自动生成ID: 自动生成数据列: deport_id
 
      # 3. 如果部门表删除一个部门,那么关联的用户怎么弄?
      # 3.1. 级联删除: on_delete=models.CASCADE
      deport = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)
 
      # 3.2. 置空: null=True,blank=True, 允许为空 ,on_delete=models.SET_NULL: 设置为空
      # deport = models.ForeignKey(to="Department", to_fields="id", null=True, blank=True, on_delete=models.SET_NULL)
 
# 单选的约束:
      # django中做的约束,写性别时,只能写1或2
      gender_choices = (
          (1, "男"),
          (2, "女"),
      )
      gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)

3. 创建表

# 1. 创建表;删除表;修改表:在models.py中创建数据库类
                class UserInfo(models.Model):
                    name = models.CharField(max_length=32)
                    password = models.CharField(max_length=64)
                    age = models.IntegerField()
                相当于:
                    create table app01_userinfo(
                        id bigint auto_increment primary key,
                        name varchar(32),
                        password varchar(64),
                        age int)
 
 

# 2. 在终端执行命令生成表:注意: APP已提前注册,
    # 1. 工具连接mysql创建数据库 
        create database 库名 default charset utf8 collate utf8_general_ci;
    
    # 2. django 中修改配置文件,连接Mysql
    
    # 3. django命令生成数据库表
        python manage.py makemigrations
        python manage.py migrate

    # 4. 在次创建表就新创建类再次执行命令(删除表或删除列:把要删除的表或列注释掉)


# 3. 在表中新增列时,由于已经存在列中可能已有数据,所以新增列必须要指定列对应的数据:
   # 1. 手动输入一个值
   # 2. 新增列时添加默认值
         age = models.IntegerField(default=2)
   # 3. 允许为空
         data = models.IntegerField(null=True,blank=True)
 
# 4. 以在models.py文件中操作类即可                       
                  

4. 在项目中操作表

根据创建的数据库类操作数据(类名.objects.xxx )
            - 1. 新增
                UserInfo.objects.create(name="lili", password="321", age=18)
 
            - 2. 删除
                 UserInfo.objects.filter(id=2).delete()  # 根据id=3条件删除
                 Department.objects.all().delete()  # 删除整张表所有数据
 
            - 3. 更新数据
                 UserInfo.objects.all().update(password=999) # 更新所有数据
                 UserInfo.objects.filter(id=3).update(password=666)  # 更新一条数据
 
            - 4. 获取数据 : data_list=[对象,对象,对象] 得到的是QuerySet类型
                 data_list = UserInfo.objects.all()  # 获取所有数据
                 for obj in data_list:
                     print(obj.id, obj.name, obj.password, obj.age)
 
                 data_list=[对象,]
                 data_list=UserInfo.objects.filter(id=3) # 获取一个数据,结果还是一个对象
                 print(data_list)
 
                 或直接获取第一行数据对象,不需要再次循环:
                 row_obj= UserInfo.objects.filter(id=3).first()
                 print(row_obj.name)

5. 查询方法

# 第一种:
    models.PrettyNum.objects.filter(mobile="13400000000",id=12)
# 第二种:
    data_dict={"mobile":"13400000000", "id":123}
    models.PrettyNum.objects.filter(**data_dict)
 
# 数字运算符:
    models.PrettyNum.objects.filter(id=12) # 等于12
    models.PrettyNum.objects.filter(id__gt=12) # 大于12
    models.PrettyNum.objects.filter(id__gte=12) # 大于等于12
    models.PrettyNum.objects.filter(id__lt=12) # 小于12
    models.PrettyNum.objects.filter(id__lte=12) # 小于等于12
 
    data_dict={"id_lte":12}
    models.PrettyNum.objects.filter(**data_dict)
 
# 字符串运算符:
    models.PrettyNum.objects.filter(mobile="13400000000")     #等于
    models.PrettyNum.objects.filter(mobile__startswith="134") # 以...开头
    models.PrettyNum.objects.filter(mobile__endswith="999")   # 以...结尾
    models.PrettyNum.objects.filter(mobile__contains="999")   # 包含
 
    data_dict={"mobile__contains":"999"}
    models.PrettyNum.objects.filter(**data_dict)
 

# 分页:
que = models.PrettyNum.objects.all()
 
que = models.PrettyNum.objects.filter(id=1)[0:10]
 
# 第一页
que = models.PrettyNum.objects.all()[0:10]
 
# 第二页
que = models.PrettyNum.objects.all()[10:20]
 
# 第三页
que = models.PrettyNum.objects.all()[20:30]
 
 
# 总数,得到的是一个数字
data = models.PrettyNum.objects.all().count()
data = models.PrettyNum.objects.filter(id=5).count()

标签:03,models,PrettyNum,数据库,配置,filter,objects,data,id
From: https://www.cnblogs.com/kh-1314/p/17024976.html

相关文章

  • SpringBoot配置文件中spring
    SpringBoot配置文件中spring.profiles.active配置详解现象:在开发的时候测试和生产配置不一样每次加配置都需要更新生产原因:不方便解决:添加多套配置知识库:1、多环......
  • SIP/2.0 403 Forbidden(Invalid domain in From: header)
    一、错误场景FreeSWITCH通过网关和一台支持SIP的网关设备互联,一个呼叫发过去,收到这个错误。FreeSWITCH的地址是192.168.1.99。网关设备的地址是192.168.1.200。SIP/2.......
  • zookeeper集群配置
    前言:zookeeper支持本机多个进程之间的集群,本文描述的是多个独立主机的分布式集群。一、前提条件至少需要3台独立主机(不管是虚拟机还是独立硬件)因为zookeeper支持“大多......
  • Linux下rpm安装MySQL及配置
    Linux下rpm安装MySQL及配置xupeng1644已于2022-03-2211:38:47修改2747收藏15分类专栏:Linux文章标签:rpmMySQLLinux版权Linux专栏收录该内容55篇文章1订阅订......
  • 线程池c3p0和dbcp2的配置初始化实例
    一、c3p0publicclassConnectionManager{publicstaticComboPooledDataSourcedataSource;static{try{dataSource=newComboP......
  • dbcp2连接池获取数据库连接Connection
    一、先来看看手工创建的方式publicstaticConnectiongetConnection(){Connectionconn=null;try{Class.forName("com.mysql.......
  • ADI Blackfin's source file -- adi_dev.h
    /**********************************************************************Copyright(c)AnalogDevices,Inc.AllRightsReserved.Thissoftwareisproprietaryandc......
  • Arcgis server服务跨域配置
    一、系统环境操作系统:windows10软件版本:arcgisserver10.2二、操作步骤1、需要下载两个文件cors-filter-1.7.jar,Java-property-utils-1.9.jar放到安装目录C:\Program......
  • ASP.NET Core 启动的配置
    目录Web主机配置使用默认配置创建Web主机配置Web服务器的URL配置Web项目调试方案Startup基于方法约定的Startup类使用IStartup接口定义Startup类无Startup......
  • 通过浪潮服务器序列号查询硬件配置以及CPU的价格
    最近想知道具体CPU的配置和价格.发现可以使用如此方式进行查询https://www.intel.cn/content/www/cn/zh/products/details/processors/xeon/scalable/platinum/products......