zoukankan      html  css  js  c++  java
  • Django mysql应用

    环境:python3、Django2

    1、安装驱动mysqlclient

    pip3 install mysqlclient

    2、创建一个数据库

    CREATE  DATABASE  database_name CHARACTER SET UTF8;       指定数据库的编码utf8

    3、创建项目

    django-admin startproject myweb  #建立项目
    cd myweb
    django-admin startapp myapp #建立项目下属APP

    4、APP下的models.py文件中加入表结构(django中之所以把表结构在自身文件中定义,是为了在其他文件中可直接引用表结构进行数据库操作,不用频繁刷新数据表获取表结构)

    from django.db import models
    
    # Create your models here.
    
    class book_info(models.Model):
        fromuser = models.CharField(max_length=30, default='WYS')
        fromsite = models.CharField(max_length=50)
        bookname = models.CharField(max_length=50)
        #updatetime = models.DateTimeField()
        #lastchapter = models.CharField(max_length=100)
    
    class site_info(models.Model):
        sitename = models.CharField(max_length=50)
        bookname = models.CharField(max_length=50)
        url = models.CharField(max_length=200)
        updatetime = models.DateTimeField()
        lastchapter = models.CharField(max_length=100)

    5.在myweb/myweb/settings.py中加入创建的APP和MYSQL连接信息

    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'myapp',
    )
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test',
            'USER': 'test',
            'PASSWORD': 'test',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }

    6.将models.py中的数据库表结构同步到MYSQL中

    python manage.py migrate #创建表结构
    python manage.py makemigrations myapp #告诉django,myapp中的表结构有更新
    python manage.py migrate myapp  #执行myapp中的表结构到mysql中

    数据库中的表名为myapp_book_info,myapp_site_info,但django代码中调用时的表名为models.py中定义的表名book_info,site_info

    7、数据表操作-增删改查,请参考mysql 连接 django

    8、Django连接mysql出错

    错误一:No module named 'MySQLdb'

    原因:python3连接MySQL不能再使用mysqldb,取而代之的是pymysql。

    解决方法:在python的MySQL包中,即路径:C:UsersadongAppDataLocalProgramsPythonPython36Libsite-packagesDjango-2.0.3-py3.6.eggdjangodbackendsmysql

    下的__init__.py文件中加入:

    import pymysql

    pymysql.install_as_MySQLdb()

    错误二:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

    原因:在解决了错误一以后出现了此错误。

    解决方法:在python的MySQL包中,即路径:C:UsersadongAppDataLocalProgramsPythonPython36Libsite-packagesDjango-2.0.3-py3.6.eggdjangodbackendsmysql

    # 找到base.py文件,注释掉 base.py 中如下部分(35/36行)
    if version < (1, 3, 3):
         raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

    此时仍会会报错,报错信息如下:

    AttributeError: ‘str’ object has no attribute ‘decode’

    #找到operations.py文件(146行),将decode改为encode
    #linux vim 查找快捷键:?decode
    if query is not None:
        query = query.decode(errors='replace')
    return query
    #改为
    if query is not None:
        query = query.encode(errors='replace')
    return query

    OK~ 不再报错

    参考:

    1、mysql 连接 django

    2、django+mysql简单总结

    3、编写你的第一个 Django 应用,第 2 部分

    4、Django连接MySQL出错

    5、Ddjango2.2/mysql ImproperlyConfigured: mysqlclient

  • 相关阅读:
    03.分支结构
    02.语言元素
    开博的第一天
    http://mirrors.163.com/centos/7.6.1810/os/x86_64/repodata/repomd.xml: [Errno 14]
    spring boot配置spring-data-jpa的时候报错CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.NoSuchMethodError
    开机自动运行exe
    hibernate.QueryException: Legacy-style query parameters (`?`) are no longer supported 问题
    elasticSearch7____BUG
    idea开发web项目${pageContext.request.contextPath}出现错误
    进阶
  • 原文地址:https://www.cnblogs.com/anovana/p/10448294.html
Copyright © 2011-2022 走看看