笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~
【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库
Django——连接mysql数据库
连接MySQL数据库1.安装MySQL驱动程序2.创建数据库3.配置settings.py文件4.django操作表django操作表语句与mysql语句的关系创建表修改表插入数据删除数据查询数据更新数据
5.迁移数据库报错解决
连接MySQL数据库
ORM(Object-Relational Mapping)是一种编程技术,它允许开发者使用面向对象的方式来操作数据库,而不必直接编写SQL语句。在Django中,ORM是通过Django自带的django.db.models模块来实现的。
创建、修改、删除数据库中的表【无法创建数据库】操作表中的数据
1.安装MySQL驱动程序
首先,确保你已经安装了适用于Python的MySQL驱动程序。可以使用pip命令来安装,例如:
pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
2.创建数据库
需要在mysql中完成
3.配置settings.py文件
打开你的Django项目中的settings.py文件,找到DATABASES设置部分,并进行如下配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_mysql_username',
'PASSWORD': 'your_mysql_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
确保将your_database_name、your_mysql_username和your_mysql_password替换为你的MySQL数据库的名称、用户名和密码。
4.django操作表
django操作表语句与mysql语句的关系
在Django中,操作表的语句与直接在MySQL中执行的SQL语句有着密切的关系。Django的ORM(Object-Relational Mapping)提供了一种Pythonic的方式来操作数据库,它将Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。
下面是一些常见的数据库操作,以及它们在Django ORM中的对应方式和在MySQL中的原生SQL语句:
创建表
Django ORM:
# 在models.py中定义模型
class UserInfo(models.Model):
name = models.CharField(max_length=64)
password = models.CharField(max_length=128)
age = models.IntegerField()
MySQL原生SQL:
CREATE TABLE application01_userinfo (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(64),
password VARCHAR(128),
age INT
使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:
python manage.py makemigrations # 生成数据库迁移文件
python manage.py migrate # 应用数据库迁移
修改表
新增一个列 两种选择: 1) 立即提供一次性默认值(将在该列具有null值的所有现有行上设置) 2) 退出,在models.py中添加一个默认值或允许为空
# 添加默认值
salary = models.IntegerField(default=5000)
# 允许为空
salary = models.IntegerField(null=True, blank=True)
插入数据
# 原生sql语句:insert into application01_userinfo(name, password, age) VALUES ('quanquan', '123', 18)
# UserInfo.objects.create(name=name, password=password, age=age)
def register(request):
# POST方式
if request.method == 'POST':
# 处理表单提交
name = request.POST.get('name', '')
password = request.POST.get('password', '')
age = request.POST.get('age')
# 构造上下文数据
context = {
'name': name,
'password': password,
'age': age,
}
# 往数据库插入数据
UserInfo.objects.create(name=name, password=password, age=age)
# 渲染模板并返回响应
return render(request, 'result.html', context)
else:
# 显示表单页面
return render(request, 'register.html')
register.html
请输入您的信息
result.html
提交结果
您提交的信息如下:
姓名:{{ name }}
密码:{{ password }}
年龄:{{ age }}
删除数据
# 删除数据
UserInfo.objects.filter(id=1).delete()
UserInfo.objects.all().delete()
查询数据
# 查询数据
data_list = UserInfo.objects.all()
# data_list = [行对象,行对象,...,行对象] QuerySet类型
print(data_list)
#
for obj in data_list:
print(obj.name,obj.password,obj.age)
# 圈圈 123456 20
# 圈圈1 123456 11
更新数据
# 更新 id 为 1 的记录的 name 和 age 字段
UserInfo.objects.filter(id=1).update(name='new_name', age=30)
Django的ORM会将我们的Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。这种方式简化了数据库操作的复杂性,同时也提高了代码的可读性和可维护性。
5.迁移数据库
使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:
python manage.py makemigrations # 生成数据库迁移文件
python manage.py migrate # 应用数据库迁移
Django 就会根据这个模型创建相应的 MySQL 表。假设你的应用名为 application01,模型名为userinfo,那么在 MySQL 数据库中就会生成一个名为 application01_userinfo的表
报错解决
报错:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26) 原因:django与mysql版本不兼容 解决方式: 1.升级mysql版本(SELECT VERSION() 我的版本是5.5.40),有点麻烦不想升级 2.降低django版本(需要先搜一下版本兼容情况)
pip uninstall django pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
好文阅读
发表评论