Django(15)ORM——配置(很重要)

1、配置数据库连接

1.1,下载pymysql

pip install PyMySQL

1.2,在Django的工程同名子目录的__init__.py文件中添加如下语句

from pymysql import install_as_MySQLdb
   
install_as_MySQLdb() # 让pymysql以MySQLDB的运行模式和Django的ORM对接运行

1.3,修改setting.DATABASES配置信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root123',  # 数据库用户密码
        'NAME': 'student'  # 数据库名字,要已经存在的数据库
    }
}

1.4,在MySQL中创建数据库

create database student; # mysql8.0默认就是utf8mb4;
create database student default charset=utf8mb4; # mysql8.0之前的版本

1.5,数据库迁移

python manage.py makemigrations
python manage.py migrate

扩展

  • db first, 根据数据库的表生成类
    python manage.py inspectdb
  • code first,根据类来创建数据库表
    python manage.py makemigrations
    python manage.py migrate

到此为止,其实已经完成
1.6,如果在ORM的运行中查看sql语句,在setting.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',
        },
    }
}

1.7,确保配置文件中的INSTALLED_APPS中写入自己创建的app名称,一般情况会自动写入,有时候要手写

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

1.8,error:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:
通过查找路径C:\Programs\Python\Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql 这个路径里的文件把以下代码注释

if version < (1, 3, 3):
     raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
posted @ 2021-11-30 21:43  下个ID见  阅读(56)  评论(0)    收藏  举报