Django数据库配置

数据库配置

数据库配置是选择项目所使用的数据类型,不同的数据库需要设置不同的数据库引擎,数据库引擎实现项目于与数据库的连接。Django提供4种数据库引擎。

  • ‘django.db.backends.postgresql’
  • ‘django.db.backends.mysql’
  • ‘django.db.backends.sqlite3’
  • ‘django.db.backends.oracle’

项目创建时默认使用Sqlite3数据库,这是一款轻型的数据库,常用于嵌入式系统开发,且占用资源非常少。Sqlite3数据库配置信息如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

1.1、 mysqlclient连接MySql

由于mysqldb不支持Python3,因此Django2.0以上版本不再使用mysqldb作为MySql的连接模块,而选择mysqlclient模块,但两者之间在使用上并没有太大的差异。
在配置MySQL之前,需要安装mysqlclient模块。使用pip install mysqlclient即可。
项目的配置文件setting.py中配置MySQL数据库连接信息,代码如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }
}

为了验证数据库连接信息是否正确,在PyCharm的Terminal界面下输入Django操作指令python manage.py migrate来创建Django内置功能的数据表,能到自己建立的数据库中查找到这些数据表,则表示数据库连接正确!

1.2、pymysql连接MySQL

除了使用mysqlclient模块连接MySQL之外,还可以使用pymysql模块连接MySQL数据库。pymysql模块安装使用pip在线安装即可,pymysql模块安装成功后,项目配置文件settings.py的数据库配置信息无需修改,只要在MyDjango文件夹__init__.py中设置数据库连接模块即可,代码如下:

import pymysql
pymysql.install_as_MySQLdb()

验证的方法与mysqlclient连接MySql一样。值得注意的是,若MySQL是8.0以上版本,在Django连接MySQL数据库时会提示django.db.utils.OperationalError的错误信息,这是因为MySQL8.0版本的密码加密方式发生了改变,8.0版本的用户密码采用的是CHA2加密方式。为了解决这个问题,通过SQL语句将8.0的加密方式改回原来的加密方式,在MySQL的可视化工具中运行以下SQL语句:

# newpassword 是已设置的用户密码
ALERT USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
FLUSH PRIVILEGES;

Django除了支持PostgreSQL、SQLite3、MySQL和Oracle之外,还支持SQL Server和MongoDB的连接。

1.3 多个数据库的连接方式

在一个项目中可能需要使用多个数据库才能满足开发需求,特别对于数据量过大的系统,单个数据库存储的数据越多就会使服务器负载越大,因此会将数据划分多个数据库服务器共同存储。

#数据库配置
DATABASES = {
   'default': {
          'ENGINE': 'django.db.backends.mysql', #数据库引擎
          'NAME': 'pythondms',                       #数据库名
          'USER': 'root',                       #用户名
          'PASSWORD': '',                   #密码
          'HOST': '36.103.245.29',                           #数据库主机,默认为localhost
          'PORT': '3306',                           #数据库端口,MySQL默认为3306
          'OPTIONS': {
             'autocommit': True,
         }
    },
    'default1': {
          'ENGINE': 'django.db.backends.mysql', #数据库引擎
          'NAME': 'pythondms',                       #数据库名
          'USER': 'root',                       #用户名
          'PASSWORD': '',                   #密码
          'HOST': '39.107.35.95',                           #数据库主机,默认为localhost
          'PORT': '3306',                           #数据库端口,MySQL默认为3306
          'OPTIONS': {
             'autocommit': True,
         }
    }
}

项目中连接了多个数据库,则数据库之间的使用需要遵从一定的规则和设置。比如项目中定义了多个模型,每个模型所对应的数据表可以选择在某个数据库中生成,如果模型没有指向某个数据库,模型就会在key为default的数据库中生成。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值