【python】Django——连接mysql数据库

这篇具有很好参考价值的文章主要介绍了【python】Django——连接mysql数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~

【Django专栏】
Django——django简介、django安装、创建项目、快速上手
Django——templates模板、静态文件、django模板语法、请求和响应
Django——连接mysql数据库

连接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

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django

2.创建数据库

需要在mysql中完成
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django

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_nameyour_mysql_usernameyour_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  # 应用数据库迁移

修改表

新增一个列
两种选择:
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django
1) 立即提供一次性默认值(将在该列具有null值的所有现有行上设置)
2) 退出,在models.py中添加一个默认值或允许为空

# 添加默认值
salary = models.IntegerField(default=5000)
# 允许为空
salary = models.IntegerField(null=True, blank=True)

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django

插入数据

# 原生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

<!DOCTYPE html>
<html>
<head>
    <title>输入信息</title>
</head>
<body>
    <h2>请输入您的信息</h2>
    <form method="post" action="/register/">
<!--        {% csrf_token %} 是 Django 模板标记,用于防止跨站请求伪造(CSRF)攻击。-->
<!--        Django 要求所有 POST 的表单都要包含这个标记,以确保安全性。-->
        {% csrf_token %}
        <label for="name">姓名:</label>
        <input type="text" id="name" name="name"><br><br>
        <label for="password">密码:</label>
        <input type="text" id="password" name="password"><br><br>
        <label for="age">年龄:</label>
        <input type="text" id="age" name="age"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

result.html

<!-- result.html -->
<!DOCTYPE html>
<html>
<head>
    <title>提交结果</title>
</head>
<body>
    <h2>提交结果</h2>
    <p>您提交的信息如下:</p>
    <p>姓名:{{ name }}</p>
    <p>密码:{{ password }}</p>
    <p>年龄:{{ age }}</p>
</body>
</html>

django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django

删除数据

# 删除数据
UserInfo.objects.filter(id=1).delete()
UserInfo.objects.all().delete()

查询数据

# 查询数据
data_list = UserInfo.objects.all()

# data_list = [行对象,行对象,...,行对象]	QuerySet类型

print(data_list)	
# <QuerySet [<UserInfo: UserInfo object (3)>, <UserInfo: UserInfo object (4)>]>

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.5.4,Django,Python学习,python,数据库,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.5.4,Django,Python学习,python,数据库,django

报错解决

报错: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文章来源地址https://www.toymoban.com/news/detail-765002.html

到了这里,关于【python】Django——连接mysql数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python+django+mysql项目实践二(前端及数据库)

    Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 添加模板 在templates下创建 views文件中添加 在setting文件中进行配置 在Terminal输入命令下发指令

    2024年02月14日
    浏览(60)
  • python在Django中,如何使用MySQL数据库进行分页怎么实现

    在Django中,使用MySQL数据库进行分页是一个相对简单的任务。Django的ORM提供了内置的分页功能,你只需要使用Paginator类即可。以下是一个基本的示例,展示了如何在Django中使用MySQL进行分页: 首先,确保你已经安装了Django和MySQL,并且已经配置了Django项目以使用MySQL数据库。

    2024年04月29日
    浏览(46)
  • Django-drf项目初始化:跨域、认证权限过滤、static静态资源路由,mysql数据库连接,登录注册功能

    码云地址:https://gitee.com/liuhaizhang/drf-project-initialization 项目目录结构: study_drf            -home         -static         -study_drf         -util         -manage.py pip install django #drf基于django pip install djangorestframework #drf框架 pip install mysqlclient #连接数据库 pip install djangorestframewo

    2024年02月03日
    浏览(67)
  • python常用库之pymongo库(Python操作Mongodb数据库)| Django项目连接MongoDB方式选型(MongoEngine)

    github:https://github.com/mongodb/mongo-python-driver PyMongo用于与Python与MongoDB数据库进行交互的工具。bson包是Python的BSON格式 的实现。Pymongo包是MongoDB的本地Python驱动程序。gridfs包是gridfs 的pymongo实现。 Pymongo支持MongoDB 3.6、4.0、4.2、4.4、5.0和6.0。 总结:PyMongo 是 MongoDB 与 Django 交互的标准

    2024年02月10日
    浏览(56)
  • Django连接数据库

    mysql -u root -p show databases; 在settings.py文件中进行配置和修改 在models.py文件中进行修改 创建表 执行命令: python manage.py makemigrations python manage.py migrate 条件:在setings保证app已经注册 删除表 当需要删除表时,则再models.py中注释表结构,然后重新执行命令即可。 修改表 新增列的

    2024年04月27日
    浏览(33)
  • Django连接多个数据库

    为了让不同业务的数据分离,落到不同的库,使用 django 连接多个数据库。 Django 使用 default 数据库,如果没有其他选择 default 可以没有,但是必须设置一个空字典 设置多个数据库,需要同步多次。这里比较麻烦。 迁移将会把所有model的所有表镜像的迁移到两个库,自带的指

    2024年02月11日
    浏览(49)
  • django如何连接sqlite数据库?

    目录 一、SQLite数据库简介 二、Django连接SQLite数据库 1、配置数据库 2、创建数据库表 三、使用Django ORM操作SQLite数据库 1、定义模型 2、创建对象 3、查询对象 总结 本文将深入探讨如何在Django框架中连接和使用SQLite数据库。我们将介绍SQLite数据库的特点,Django的数据库配置,以

    2024年02月06日
    浏览(55)
  • django连接本地数据库并执行增删改查

    models.py文件根据数据库表映射出对应的类 在views.py中实现增删改查操作: 增: 删: 改: 查:

    2024年02月20日
    浏览(45)
  • django使用mysql数据库

    Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动,但是目前对mysqlclient的支持更好,在驱动的基础

    2024年02月14日
    浏览(51)
  • django框架——实现MySQL数据库数据的删除

    在html中的删除按钮中绑定js文件中的事件,带上参数,点击即触发(删除按钮不能是a链接,不然报错) js文件中实现该功能,发起ajax请求到后端视图中对数据库进行操作 路由导入 在视图里面实现删除功能

    2024年02月13日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包