• django-连接数据库及创建表,已存字段的增删


    连接数据库

    配置文件settings

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',                    # 你的数据库引擎
            'HOST': "localhost",                                     # 你的数据地址,localhost代表本地
            "PORT": 3306,                                            # 端口, 数据库的默认端口一般是3306
            "USER": "admin",                                         # 用户名
            "PASSWORD": "xxxx",                                      # 密码
            "NAME": "study"                                          # 库名
        }
    }
    如果你的数据库连接报错,
      1.缺少组件,可以安装以下的包
    • 安装依赖(如果使用虚拟环境,需要在虚拟环境下安装)
      • 安装mysql开发依赖包
      sudo apt-get install libmysqlclient-dev gcc
      2.ps: 如果出现连接被拒绝的错误:
        查看你的配置是否填写错误
        检查你的用户是否有远程权限
    运行不报错则连接成功---------------------------------
    创建表
      命令的执行过程:makemigrations(生成migrations文件,django通过这些文件创建表)
              migrate(迁移同步,通过生成的migartions文件创建表)  前提写好下面第一步
    1.django创建表的类
    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.db import models
    
    # Create your models here.
    
    
    class Article(models.Model): # app名字+类名 生成表明 ps:app名字是hello,对应表名为 hello_article
        title = models.CharField(max_length=50)
        content = models.CharField(max_length=50)
    
    
    class Replay(models.Model):
        content = models.CharField(max_length=50)

    2.生成对应app的migrations文件  会自动生成id字段

       对已经存在的表进行修改,每执行一次makemigrations,会在该app的migrations文件下生成一个记录的py文件

      linux: python manage.py makemigrations  [appname]              可以不加appname,表示settings中的所有app,包括自带的app 

      pycharm(选中项目名称)>tools>run manage.py Task...  进入命令行         输入命令 makemigrations  appname也可

     3.迁移同步    同步数据库到mysql

    同步之后:不能修改migrations文件  ps: 一套对应生成的migrations文件与数据库需保存一致,否则系统会报错!!! 

    linux:  python manage.py migrate  appname
    pycharm  : migrate appname
     
    ************一套对应生成的migrations文件与数据库需保存一致,否则系统会报错!!!
       (1)不要对已经生成好的migrations文件做任何操作
       (2)所有对数据库的操作由同一个人做,并保留好一套migrations文件
       (3)不要直接在数据库中修改任何操作,比如修改字段,添加字段,删除字段等等;
     
    当migrate迁移同步后:也就是创建好表后(migrations文件已经存在),如果新增字段,需要对新增字段进行设置 null=True 或者 default='xx' 
    原因是 :django迁移同步后,生成的 migrations会记录表数据,而新增字段(没有数据)如果不指定字段可以为空或者设置默认值,它将不知道怎么展示数据      (已经存在的数据开始没这个字段,现在新增加字段时,你得给其它存在的数据添加新字段默认值或者null=True)
     
    对已存在的表的字段进行增删
      在models里进行操作,新增字段则对新增字段进行设置 null=True 或者 default='xx' 
                 删除字段则直接删除该字段代码
      最后都需要:makemigrations   +   migrate
     
    当null=False, (不为空)如果不设置默认值 , 它默认为 空字符串 ' ',不符合django的上述限制条件
    当null=False,default=None, 两者联合使用,才符合限制条件
     
     
     
  • 相关阅读:
    nuxt使用pdfjs-dist插件实现pdf预览
    package.json详细介绍
    encodeURI()和encodeURIComponent() 区别
    前端预览pdf——文件流
    fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': Failed to connect to github.com port 443: Timed out
    vue分隔输入验证码
    Vue简单实现滚动到底部加载数据
    nuxt pdf在线预览
    Eclipse入门-HelloWorld
    多任务学习算法综述
  • 原文地址:https://www.cnblogs.com/tangpg/p/9009283.html
Copyright © 2020-2023  润新知