django链接MySQL数据库

django链接MySQL数据库

一.Django默认数据库sqlite3

settings.py文件

# **Django默认使用的是自带的sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

二.链接MySQL数据库

1.安装pymysql

pip install pymysql

2.修改配置文件settings.py

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db1',  # 一定要事先创建好才能指定
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123',
        'CHARSET': 'utf8'
    }
}

# 在__init__这一句话(本质就是猴子补丁),也可以放在setting.py中
import pymysql
pymysql.install_as_MySQLdb()

三.数据库同步与迁移

python3 manage.py makemigrations #在migrations 文件夹下记录一下
python3 manage.py migrate   #把记录变更到数据库

四.Django提供反向同步

1.先指定数据库迁移命令完成连接


python3 manage.py makemigrations #在migrations 文件夹下记录一下
python3 manage.py migrate   #把记录变更到数据库

2.Django使用inspectdb反向生成model

# 执行如下命令拿回来原来的数据表
python3 manage.py inspectdb [表名]
#示例
python3 manage.py inspectdb userinf

'''
输出结果如下:
from django.db import models

class Userinfo(models.Model):
    id = models.IntegerField(blank=True, null=True)
    name = models.CharField(max_length=32, blank=True, null=True)
    pwd = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'userinfo'
'''

image-20210321163510396

如上面代码所示, 它会将数据库中表转换成代码的形式, 只需要复制到 models.py 文件中去就行了

class Userinfo(models.Model):
    id = models.IntegerField(blank=True, null=True)
    name = models.CharField(max_length=32, blank=True, null=True)
    pwd = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'userinfo'

四、Django查看原生sql

  1. queryset对象.query

  2. 通过配置日志字典到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',
           },
       }
    }

版权声明:
作者:淘小欣
链接:https://blog.taoxiaoxin.club/147.html
来源:淘小欣的博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
django链接MySQL数据库
django链接MySQL数据库 一.Django默认数据库sqlite3 settings.py文件 # **Django默认使用的是自带的sqlite3 DATABASES = { 'default': { ……
<<上一篇
下一篇>>