将 Django 模型写入 MySQL 数据库的步骤与写入其他数据库类型基本相同。以下是详细的步骤和示例,帮助你在 Django 项目中配置 MySQL 数据库并写入数据。
1. 安装 MySQL 和相关依赖
首先,确保你已经安装了 MySQL 数据库服务器和 mysqlclient
包。mysqlclient
是 Django 用于连接 MySQL 的 Python 库。
安装 MySQL
根据你的操作系统,安装 MySQL 的方法可能不同。以下是一些常见操作系统的安装方法:
-
Ubuntu/Debian:
shsudo apt-get update sudo apt-get install mysql-server
-
CentOS/RHEL:
shsudo yum install mysql-server
-
macOS :
使用 Homebrew 安装 MySQL:
shbrew install mysql
安装 mysqlclient
使用 pip 安装 mysqlclient
:
sh
pip install mysqlclient
2. 配置 Django 项目
编辑 settings.py
文件,配置数据库设置以使用 MySQL。
python
# myproject/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost', # 或者你的 MySQL 服务器地址
'PORT': '3306', # 默认端口
}
}
3. 创建数据库
在 MySQL 中创建数据库。你可以使用 MySQL 命令行工具或其他管理工具(如 phpMyAdmin)来创建数据库。
sh
mysql -u your_username -p
进入 MySQL 命令行后,创建数据库:
sql
CREATE DATABASE your_database_name;
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
EXIT;
4. 定义模型
在你的应用中定义模型。假设你有一个应用 myapp
,你需要定义一个 Book
模型:
python
# myapp/models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
publication_date = models.DateField()
price = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return self.title
5. 创建迁移文件
定义好模型后,你需要创建一个迁移文件,该文件会告诉 Django 如何在数据库中创建对应的表。
运行以下命令来创建迁移文件:
sh
python manage.py makemigrations myapp
这将生成一个迁移文件,通常位于 myapp/migrations/
目录下。
6. 应用迁移
创建迁移文件后,你需要应用这些迁移,以在数据库中实际创建表。
运行以下命令来应用迁移:
sh
python manage.py migrate
这将在 MySQL 数据库中创建 Book
表。
7. 写入数据
现在,你可以在视图、脚本或其他地方使用 Django ORM 来写入数据。
示例:在视图中写入数据
假设你在 views.py
中有一个视图,用于创建一个新的 Book
对象并保存到数据库:
python
# myapp/views.py
from django.shortcuts import render
from .models import Book
def create_book(request):
if request.method == 'POST':
title = request.POST.get('title')
author = request.POST.get('author')
publication_date = request.POST.get('publication_date')
price = request.POST.get('price')
book = Book(
title=title,
author=author,
publication_date=publication_date,
price=price
)
book.save() # 保存到数据库
return render(request, 'book_created.html', {'book': book})
else:
return render(request, 'create_book.html')
示例:在脚本中写入数据
你也可以在独立的脚本中写入数据。例如,创建一个 manage.py
脚本来添加书籍:
python
# add_books.py
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
django.setup()
from myapp.models import Book
def add_books():
book1 = Book(
title='The Great Gatsby',
author='F. Scott Fitzgerald',
publication_date='1925-04-10',
price=19.99
)
book1.save()
book2 = Book(
title='To Kill a Mockingbird',
author='Harper Lee',
publication_date='1960-07-11',
price=15.99
)
book2.save()
if __name__ == '__main__':
add_books()
运行这个脚本:
sh
python add_books.py
8. 验证数据
你可以使用 Django 的管理界面或 shell 来验证数据是否已成功写入数据库。
使用管理界面
- 确保
Book
模型在admin.py
中注册:
python
# myapp/admin.py
from django.contrib import admin
from .models import Book
admin.site.register(Book)
- 运行开发服务器:
sh
python manage.py runserver
- 访问
http://127.0.0.1:8000/admin/
并登录,你应该能看到Book
模型的数据。
使用 Django shell
运行 Django shell:
sh
python manage.py shell
在 shell 中查询数据:
python
from myapp.models import Book
books = Book.objects.all()
for book in books:
print(book.title, book.author, book.publication_date, book.price)
总结
通过以上步骤,你可以在 Django 项目中配置 MySQL 数据库并写入数据。定义模型、创建迁移文件、应用迁移、写入数据和验证数据是整个过程中不可或缺的部分。