django 连接mysql

71 阅读1分钟

Django中的mysql配置

在settins的DATABASES中如下配置

DATABASES = { 
 'default': { 
       'ENGINE': 'django.db.backends.mysql', # 数据库引擎 
       'NAME': 'mydemo', # 数据库名 
       'USER': 'root', # 账号 
       'PASSWORD': 'root', # 密码 
       'HOST': '127.0.0.1', # HOST 
       'POST': 3306, # 端口 
       } 
}

  

字段名称代码中都添加了相应说明,ENGINE为MYSQL数据库引擎,这个当然不会凭空出现,需要我们去安装

安装pymysql
pip3 install pymysql

项目中配置

在最开始的项目包下的__init__.py中进行如下配置

" setting中的配置默认为sqlite3数据库 当需要修改成MySql时 并且在setting.py的同级目录的__init__.py 加入如下配置 否则会报错: Error loading MySQLdb module. "

import pymysql 
pymysql.install_as_MySQLdb()

在models.py 中如下配置


from django.db import models

class Users(models.Model):
    id = models.AutoField(primary_key=True)
    # 用户名
    username = models.CharField('用户名', max_length=30, null=True, blank=True, unique=True)
    # 密码
    password = models.CharField('密码', max_length=30) 
    # 邮箱
    email = models.EmailField('邮箱', unique=True, null=True, blank=True)

在利用models.py文件生成数据库表之前,我们需要手动的先创建数据库:

mysql> create database mydemo; 
Query OK, 1 row affected (0.01 sec)

创建完django_msql库之后,我们在终端执行如下命令,他的作用是将models文件生成一个迁移文件


   python3 manage.py makemigrations

image.png

迁移文件生成完毕,执行

python3 manage.py migrate

会将迁移文件的内容作用到数据库中,生成表或者修改字段属性

控制台输出如下,则表示执行成功

(django_venv) xxxxxdeAir:djangoDemo xxxxx$ python3 manage.py migrate Operations to perform: Apply all migrations: admin, app_demo, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying app_demo.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK
表结构

desc查看表结构

mysql> desc tablename;