Django创建并连接数据库(实现增删改查)--ORM框架雏形
第一步:要先创建数据库(orm是不能创建数据库的)
第二步:settings里面指定连接到哪个数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | DATABASES = { #默认使用的是sqlite3数据库 'default' : { 'ENGINE' : 'django.db.backends.sqlite3' , 'NAME' : os.path.join(BASE_DIR, 'db.sqlite3' ), } #指定使用Mysql数据库 # 'default':{ # 'ENGINE':'django.db.backends.mysql', # 'HOST':'127.0.0.1', # 'PORT':3306, # 'USER':'root', # 'PASSWORD':'root', # 'NAME':'userinfo', #指定到那个数据库(数据库要事先建好) # # } } |
上面的NAME就是指定的数据库的名字
第三步:在app文件夹下面的init.py里面配置
1 2 3 | #因为操作msq数据库默认是用Mysqldb,现在就是手动指定用pymsql来操作数据库: import pymysql pymysql.install_as_MySQLdb() |
第四步:在models里定义类,类必须继承 models.Model,写属性,对应着数据库的字段
#指定数据库表都有哪些字段及字段的属性
from django.db import models # Create your models here. class UserInfo(models.Model): nid = models.AutoField(primary_key=True) #是否设置为主键 name = models.CharField(max_length=32) # password = models.CharField(max_length=32,default='nicai') #可以指定默认值 password = models.CharField(max_length=32,) gender = models.IntegerField() birthday = models.DateField() def __str__(self): return self.name
第五步:迁移数据库(makemigrations是生成一个文件,migrate是将更改提交到数据量)
方式一:
执行 python manage.py makemigrations(相当于做一个记录)
执行 pyhton manage.py migrate (把前面创建的表的字段执行到数据库中)
对应settings里面添加的app自动会有相对应的数据表(创建好的表的名字=aap名字+models.py里面定义的class类的名字)
方式一:通过pycharm软件点击
第六步:views.py拿网页数据并将录入到数据库指定表的字段里面
from django.shortcuts import render,HttpResponse # Create your views here. from app01.models import * #通过网页注册,拿到用户的数据信息,完成注册 def register(request): if request.method == "POST": name=request.POST.get('name',None) password=request.POST.get('password',None) gender=request.POST.get('gender',None) birthday=request.POST.get('birthday',None) #实例化models.py里面的UserInfo类,传入上面从Web提交过来的数据,将数据写入数据库 user=UserInfo.objects.create(birthday=birthday,name=name,password=password,gender=gender) print(user) #UserInfo object 是个对象 print(user.__dict__) #{'_state': <django.db.models.base.ModelState object at 0x05482290>, 'nid': 4, 'name': 'b', 'password': 'b', 'gender': '5', 'birthday': '1992-03-28'} return HttpResponse('注册成功') return render(request,'register.html') #查看表的内容 def user_list(request): user_list=UserInfo.objects.all() print(user_list) #<QuerySet [<UserInfo: yangzhizong>, <UserInfo: 杨智宗>]> QuerySet:即结果集 print(type(user_list)) #<class 'django.db.models.query.QuerySet'> print(user_list[1].name) #yangzhizong 可以依次取出输入的name值 return render(request,'user_list.html',{'user_list':user_list})
第七步:更新表的时候就要执行下这2条命令:makemigrations 和 make (每次都会有记录,不能删除)
取出数据库中每条所有的用户的信息,相当于一个对象 列表对象里 放了一堆对象
第八步:查询表时也可以一对一,多对多查询(待完善。。)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?