Django数据写入MySQL数据库

将 Django 模型写入 MySQL 数据库的步骤与写入其他数据库类型基本相同。以下是详细的步骤和示例,帮助你在 Django 项目中配置 MySQL 数据库并写入数据。

1. 安装 MySQL 和相关依赖

首先,确保你已经安装了 MySQL 数据库服务器和 mysqlclient 包。mysqlclient 是 Django 用于连接 MySQL 的 Python 库。

安装 MySQL

根据你的操作系统,安装 MySQL 的方法可能不同。以下是一些常见操作系统的安装方法:

  • Ubuntu/Debian:

    sh 复制代码
    sudo apt-get update
    sudo apt-get install mysql-server
  • CentOS/RHEL:

    sh 复制代码
    sudo yum install mysql-server
  • macOS :

    使用 Homebrew 安装 MySQL:

    sh 复制代码
    brew 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 来验证数据是否已成功写入数据库。

使用管理界面
  1. 确保 Book 模型在 admin.py 中注册:
python 复制代码
# myapp/admin.py

from django.contrib import admin
from .models import Book

admin.site.register(Book)
  1. 运行开发服务器:
sh 复制代码
python manage.py runserver
  1. 访问 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 数据库并写入数据。定义模型、创建迁移文件、应用迁移、写入数据和验证数据是整个过程中不可或缺的部分。

相关推荐
云和数据.ChenGuang5 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys6 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi6 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据7 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi8 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀8 小时前
Redis梳理
数据库·redis·缓存
独行soc8 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天8 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺8 小时前
分布式系统架构:服务容错
数据库·架构
独行soc9 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘