模型:Django与Mysql交互

songwmeta / 2023-08-03 / 原文

 

1、创建数据库用户

前提是已经在本机或者服务器上安装了mysql。

create database slw;
create user 'slw'@'%' identified by 'pwd'
grant all privileges on slw.* to 'slw'@'%' identified by 'pwd' with grant option;
flush privileges;

2、数据库配置

在连接数据库之前,需要先在setting.py中配置数据库连接信息,以及其他必要的信息。

setting.py

ALLOWED_HOSTS = ['*']

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

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [Path(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',    # 数据库引擎
        'NAME': 'dbname', # 数据库名称
        'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1 
        'PORT': 3306, # 端口 
        'USER': 'user',  # 数据库用户名
        'PASSWORD': 'pwd', # 数据库密码
    }
}

STATICFILES_DIRS = [
  Path(BASE_DIR, 'static')
]

 __init__.py

用 pymysql 模块连接 mysql 数据库

注:一般在windows环境不用配置,在linux服务器上部署django项目时配置此项。

import pymysql
pymysql.install_as_MySQLdb()

 

3、创建 APP,创建/更新表结构

首先创建一个 app:

django-admin startapp slw01

Django 识别模型变更

python manage.py makemigrations slw01

若出现报错:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

则安装mysqlclient

下载mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl

下载网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/

切换到下载目录,然后安装

pip install mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl

重新运行:

python manage.py makemigrations slw01

创建表结构

python manage.py migrate