最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Django如何连接MySQL

    正文概述    2020-10-20   234

    Django如何连接MySQL

    Django连接MySQL

    1、创建数据库 (注意设置 数据的字符编码)

    由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库。

    create database day70 default character set utf8 collate utf8_general_ci;

    2、修改project中的settings.py文件中设置  连接 MySQL数据库(Django默认使用的是sqllite数据库)

    DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'day70',
        'USER': 'eric',
        'PASSWORD': '123123',
        'HOST': '192.168.182.128',
        'PORT': '3306',
        }
    }

    扩展:查看orm操作执行的原生SQL语句

    在project中的settings.py文件增加。

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    }

    3、修改project 中的__init__py 文件设置 Django默认连接MySQL的方式

    import pymysql
    pymysql.install_as_MySQLdb()

     4、setings文件注册APP

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',
       
    ]

    相关推荐:《Python视频教程》

    5、models.py创建表

    6、进行数据迁移

    在winds cmd或者Linux shell的项目的manage.py目录下执行

    python manage.py makemigrations  #根据app下的migrations目录中的记录,检测当前model层代码是否发生变化?
    python manage.py migrate         #把orm代码转换成sql语句去数据库执行
    python manage.py migrate --fake    #只记录变化,不提交数据库操作

    Django如何连接MySQL

    扩展:修改表结构之后常见报错

    这个报错:因为表创建之时,新增字段既没有设置默认值,也没有设置新增字段可为空,去对应原有数据导致;

    2种解决方法:

    1.设置新增字段可以为空

        startdate = models.CharField(max_length=255, verbose_name="任务开始时间",null=True, blank=True)
        Handledate = models.CharField(max_length=255, verbose_name="开始处理时间",null=True, blank=True)
        Handledone = models.CharField(max_length=255, verbose_name="处理完毕时间", null=True, blank=True)
        enddate = models.CharField(max_length=255, verbose_name="任务结束时间",null=True, blank=True)
        WorkTime_cost=models.CharField(max_length=255,verbose_name='工作耗时',null=True, blank=True)

    2.设置新增字段默认值为当前时间

    Please enter the default value now, as valid Python
    The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
    Type 'exit' to exit this prompt
    >>> timezone.now()

    更多问题

    python manage.py makemigrations :把你写在models中的代码翻译成增、删、改的 SQL 语句;

    python manage.py migrate;讲python manage.py makemigrations翻译的SQL语句去数据库执行; 

    python manage.py migrate --fake;假设 migrate 把所有SQL语句执行成功了;

    我在使用Django构建表结构的时候很长一段时间都是没有了解以上3条语句的执行意义,所有经常在修改表结构之后出现报错;

    出现报错的原因:

    无非就是   makemigrations翻译的 SQL,跟数据库里面真实的表结构 相互冲突,增加、删除不了表、外键关系;

    所以遇到报错 你应该先把model中的代码注释掉-----》python manage.py migrate --fake------》python manage.py makemigrations

    去数据库把已经存在的表、外键删掉(确保数据库目前的状态,可以让makemigrations翻译出来的SQL语句在数据库里执行成功;然后migrate)--------》 python manage.py migrate;

    7.设置pycharm可视化MySQL

    Django如何连接MySQL

    Django如何连接MySQL

    Django如何连接MySQL


    起源地下载网 » Django如何连接MySQL

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元