|
笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~【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-RelationalMapping)是一种编程技术,它允许开发者使用面向对象的方式来操作数据库,而不必直接编写SQL语句。在Django中,ORM是通过Django自带的django.db.models模块来实现的。创建、修改、删除数据库中的表【无法创建数据库】操作表中的数据1.安装MySQL驱动程序首先,确保你已经安装了适用于Python的MySQL驱动程序。可以使用pip命令来安装,例如:pipinstallmysqlclient-ihttps://pypi.tuna.tsinghua.edu.cn/simple2.创建数据库需要在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',}}12345678910'运行运行确保将your_database_name、your_mysql_username和your_mysql_password替换为你的MySQL数据库的名称、用户名和密码。4.django操作表django操作表语句与mysql语句的关系在Django中,操作表的语句与直接在MySQL中执行的SQL语句有着密切的关系。Django的ORM(Object-RelationalMapping)提供了一种Pythonic的方式来操作数据库,它将Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。下面是一些常见的数据库操作,以及它们在DjangoORM中的对应方式和在MySQL中的原生SQL语句:创建表DjangoORM:#在models.py中定义模型classUserInfo(models.Model):name=models.CharField(max_length=64)password=models.CharField(max_length=128)age=models.IntegerField()12345MySQL原生SQL:CREATETABLEapplication01_userinfo(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(64),passwordVARCHAR(128),ageINT12345使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:pythonmanage.pymakemigrations#生成数据库迁移文件pythonmanage.pymigrate#应用数据库迁移12修改表新增一个列两种选择:1)立即提供一次性默认值(将在该列具有null值的所有现有行上设置)2)退出,在models.py中添加一个默认值或允许为空#添加默认值salary=models.IntegerField(default=5000)#允许为空salary=models.IntegerField(null=True,blank=True)1234插入数据#原生sql语句:insertintoapplication01_userinfo(name,password,age)VALUES('quanquan','123',18)#UserInfo.objects.create(name=name,password=password,age=age)defregister(request): #POST方式ifrequest.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)#渲染模板并返回响应returnrender(request,'result.html',context)else:#显示表单页面returnrender(request,'register.html')123456789101112131415161718192021222324'运行运行register.html
请输入您的信息
{%csrf_token%}姓名:
密码:
年龄:
123456789101112131415161718192021result.html
提交结果
您提交的信息如下:
姓名:{{name}}
密码:{{password}}
年龄:{{age}}1234567891011121314删除数据#删除数据UserInfo.objects.filter(id=1).delete()UserInfo.objects.all().delete()123查询数据#查询数据data_list=UserInfo.objects.all()#data_list=[行对象,行对象,...,行对象] QuerySet类型print(data_list) #,]>forobjindata_list: print(obj.name,obj.password,obj.age)#圈圈12345620#圈圈112345611123456789101112更新数据#更新id为1的记录的name和age字段UserInfo.objects.filter(id=1).update(name='new_name',age=30)12Django的ORM会将我们的Python代码翻译成对应的SQL语句,并执行这些SQL语句以实现数据库操作。这种方式简化了数据库操作的复杂性,同时也提高了代码的可读性和可维护性。5.迁移数据库使用Django的管理命令manage.py来执行数据库迁移操作,将模型映射到实际的数据库表。在命令行中执行以下命令:pythonmanage.pymakemigrations#生成数据库迁移文件pythonmanage.pymigrate#应用数据库迁移12Django就会根据这个模型创建相应的MySQL表。假设你的应用名为application01,模型名为userinfo,那么在MySQL数据库中就会生成一个名为application01_userinfo的表报错解决报错:django.db.utils.NotSupportedError:MySQL8orlaterisrequired(found5.7.26)原因:django与mysql版本不兼容解决方式:1.升级mysql版本(SELECTVERSION()我的版本是5.5.40),有点麻烦不想升级2.降低django版本(需要先搜一下版本兼容情况)pipuninstalldjangopipinstalldjango==2.0-ihttps://pypi.tuna.tsinghua.edu.cn/simple
|
|