django配置数据库为mysql

本文详细介绍如何将Django项目的默认数据库从SQLite3更换为MySQL,包括安装MySQLdb模块、创建数据库、修改settings.py文件及同步数据库等内容。

django配置数据库默认为sqlite3,这是一个小型数据库。django还支持市面上流行的数据库,如SQLServer, MySQL, Oracle等。本文介绍如何在django中配置其数据库为mysql。


Django.version: 1.10.1

1.  确认Python是否安装MySQLdb模块

     进入cmd,执行如下操作:

   

    如果import MySQLdb报错,需要安装这个模块。


2.  Create Project and APP

    E:\>python   django-admin.py     startproject   mysite

    E:\mysite>cd  mysite

    E:\mysite>python   django-admi.py     startapp   blog    或者   python   manage.py    startapp   blog

    说明:Project与App的关系,一个Project可以有多个App构成。


3. Create your DB in MySQL(Assume 'mydb' as the database name)

    mysql> create  database  mydb;

    mysql> commit;

    mysql> exit;


4.  修改project的配置,找到/mysite/mysite/setting.py,修改相关内容( INSTALLED_APPS与DATABASES元组 )

    INSTALLED_APPS = (

         'django.contrib.admin',

         'django.contrib.auth',

         'django.contrib.contenttypes',

         'django.contrib.sessions',

         'django.contrib.messages',

         'django.contrib.staticfiles', 

         'blog',    #Add your own app name,  this is the app name you have created at step 2.

    )


    DATABASES = {

        'default': {

              'ENGINE': 'django.db.backends.mysql',# Add 'postgresql_psycopg2','mysql', 'sqlite3' or 'oracle'

              'NAME': 'mydb',                     # Your db name, Or path to database file if using sqlite3

              'USER':'root',                        # Your db user name, Not used with sqlite3

              'PASSWORD':'mysql123',     #  Your db password, Not used with sqlite3

              'HOST':'',                               #  Your db host, set to empty string('') for default for localhost,  Not used with sqlite3

              'PORT':'3306',                      #  Your db port, set to empty string('') for default, Not used with sqlite3

         }

     }


5.  创建Model,即修改app的配置(为这个APP创建表进行配置),找到mysite/blog/models.py,输入如下内容

    from django.db import models

    class BlogInfo(models.Model):

        name = models.CharField(max_length=20)

    注:每一个APP都有一个对应的models.py文件,如果这个文件的内容过大,理论上是可以拆分的,但不建议。 这时候应该考虑去拆APP,所谓“宁拆十个APP,不分一个Model”。


6. 检查是否有错误

    E:\mysite>python   manage.py    check

    0 errors found

    注:django1.7之前命令是python  manage.py  validate


7. 同步数据库

     E:\mysite>python   manage.py    makeimgrations

     E:\mysite>python   manage.py    imgrate    

     注:django1.7之前命令是python  manage.py   syncdb

    

8. 查看MySQL

    E:\mysite>python   manage.py    dbshell

    mysql>  use mydb

    Database changed

    mysql>  show tables;

    mysql>  desc  blog_BlogInfo;

     


9. 如果你想看django是如何帮你创建表的,使用命令: python  manage.py  sqlall   blog来显示mysql语法。




### Django配置 MySQL 数据库 #### 安装必要的依赖包 为了使 Django 支持 MySQL 数据库,在 Python 环境中需先安装 `mysqlclient` 或者 `PyMySQL` 库。推荐使用 `pip install mysqlclient` 来完成这一操作,因为它提供了更好的兼容性和性能[^2]。 #### 修改 settings.py 文件中的 DATABASES 设置 打开项目的 `settings.py` 文件并找到 `DATABASES` 字典部分。将默认的 SQLite 配置更改为如下所示: ```python import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', # 替换成实际创建好的数据库名称 'USER': 'root', # 使用具有适当权限的用户名 'PASSWORD': 'password', # 对应用户的密码 'HOST': 'localhost', # 如果是在本地运行则通常是'localhost' 'PORT': '3306', # 默认端口为3306, 若有更改请填写相应端口号 } } ``` 注意替换上述代码片段里的 `'your_database_name'`, `'root'`, 和 `'password'` 成真实的值来匹配个人环境设置[^1]。 #### 创建 MySQL 数据库 登录到 MySQL 控制台或者通过其他管理工具新建一个用于存储应用程序数据的新数据库。可以执行 SQL 命令如 `CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;` 来实现这一点[^4]。 #### 加载时区表 (可选但建议) 如果遇到与时间有关的操作出现问题,则可能是由于缺少时区信息引起的。可以通过命令行进入 MySQL 并输入 `mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql` 将系统的时区文件导入至 MySQL 的 `mysql` 表中[^3]。 #### 执行迁移指令同步模型结构 最后一步就是让 Django 把定义的数据模型应用到新建立起来的 MySQL 数据库里去。这可通过终端依次运行两条命令达成目的: - `python manage.py makemigrations`: 自动检测已有的模型变化情况; - `python manage.py migrate`: 实际地把这些变更反映到了目标数据库上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值