Django数据库交互

本文介绍了在Django中如何进行数据库交互,包括创建模型、执行数据库操作以及应对数据库表变更的操作步骤。在创建模型后,遇到数据库错误django.db.utils.InternalError: (1051, ""Unknown table 'xxx'""),文章提供了问题解决方案。同时,文章还讨论了如何在views.py中添加方法,并分享了数据库表变更的经验。" 106071864,9224215,Verilog实现异步FIFO:代码详解,"['Verilog', 'FPGA', '异步设计', '数字逻辑', '硬件描述语言']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们开始一个新的应用的时候

django-admin.py startapp app01

接下来的两个步骤如果已经设置好了mysql就可以忽略直接进入正题
1.在 settings.py 中找到 INSTALLED_APPS 这一项,添加上自己应用的名字

INSTALLED_APPS = (
   
    'app01',               # 添加此项
)

2.# 在与 settings.py 同级目录下的 init.py 中引入模块和进行配置

import pymysql
pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()

创建模型

在生成的app01的文件内找到models.py这个文件添加自己的表

class Book(models.Model):
    id = models.AutoField(primary_key=True) # id 会自动创建,可以手动写入
    title = models.CharField(max_length=32) # 书籍名称
    price = models.DecimalField(max_digits=5, decimal_places=2) # 书籍价格
    publish = models.CharField(max_length=32) # 出版社名称
    pub_date = models.DateField() # 出版时间

在终端运行

$ python3 manage.py migrate   # 创建表结构
$ python3 manage.py makemigrations app01  # 让 Django 知道我们在我们的模型有一些变更
$ python3 manage.py migrate app01   # 创建表结构

个人踩坑

当时数据库在设置的时候选择错误,但是已经在终端运行了创建表结构的语句,出现了django.db.utils.InternalError: (1051, “Unknown table‘xxx’’”)的错误
这里可以完美解决

数据库操作

规则交互
在app01/views.py: 文件代码:

from django.contrib import admin
from django.urls import path
from . import views
 
urlpatterns = [
    path('add_book/', views.add_book),
]

添加方法
app01/views.py: 文件代码:

class Book(models.Model):
    from app01 import models 
# Create your views here.

def add_book(request):
    books = models.Book.objects.create(title="如来神掌",price=200,publish="功夫出版社",pub_date="2010-10-10") 
    print(books, type(books)) # Book object (18) 
    return HttpResponse("<p>数据添加成功!</p>")

个人踩坑

如果是新打开的应用,会提示Class "xxx" has no 'objects' member的报错提醒

完美解决

数据库对表的变更操作

最简单的是使用mysqlbench进行操作了,但是要记得进行同步,

我对我的一张表进行操作
添加了youxiang列

python3 manage.py makemigrations cookie

进行变更
在这里插入图片描述
1是对这个进行变更

python3 manage.py migrate 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值