Django 连接 MySQL 数据库与 Model 定义

Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。Django 自带了一个强大的 ORM(对象关系映射)系统,允许开发者以 Python 类的方式操作数据库。本文将介绍如何在 Django 项目中连接 MySQL 数据库,并定义 Model。

环境准备

在开始之前,请确保你已经安装了 Python 和 Django。此外,你还需要安装 MySQL 数据库和 MySQL 的 Python 连接器 mysqlclient

  1. 安装 Django:

    pip install django
    
  2. 安装 MySQL Connector:

    pip install mysqlclient
    

配置 Django 项目以使用 MySQL

  1. 创建一个新的 Django 项目(如果你还没有一个):

    django-admin startproject myproject
    cd myproject
    
  2. 编辑 settings.py 文件,找到 DATABASES 设置,并修改为以下内容:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mydatabase',
            'USER': 'myuser',
            'PASSWORD': 'mypassword',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }
    

    请将 mydatabase, myuser, mypassword 替换为你的 MySQL 数据库信息。

  3. 运行以下命令来创建数据库表:

    python manage.py migrate
    

定义 Model

Model 是 Django ORM 的核心,它定义了数据库中的表结构。下面是一个简单的 Model 示例:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publish_date = models.DateField()

    def __str__(self):
        return self.title

在这个例子中,我们定义了一个 Book 类,它有三个字段:title, author, 和 publish_date。每个字段都对应数据库中的一列。

创建和使用 Model

  1. 首先,确保你的 app(例如 myapp)已经在 settings.py 文件的 INSTALLED_APPS 列表中。

  2. 运行以下命令来创建数据库表:

    python manage.py makemigrations
    python manage.py migrate
    
  3. 使用 Django shell 来创建和查询数据:

    python manage.py shell
    

    在 shell 中,你可以创建和查询数据:

    from myapp.models import Book
    
    # 创建一本书
    book = Book(title='Python编程', author='某作者', publish_date='2023-01-01')
    book.save()
    
    # 查询所有书籍
    books = Book.objects.all()
    for book in books:
        print(book.title, book.author, book.publish_date)
    

关系图

以下是 Book Model 的关系图:

erDiagram
    book {
        int id PK "Auto Increment"
        string title "VARCHAR(100)"
        string author "VARCHAR(100)"
        date publish_date
    }

结语

通过本文,你应该已经了解了如何在 Django 项目中连接 MySQL 数据库,并定义 Model。Django 的 ORM 系统提供了一个非常强大和灵活的方式来操作数据库,使得开发者可以更加专注于业务逻辑的实现。希望本文能帮助你更好地使用 Django 开发 Web 应用。