问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django orm创建数据表

发布网友 发布时间:2022-04-08 21:00

我来回答

1个回答

热心网友 时间:2022-04-08 22:29

Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的。所有的数据库的建立,都是在model.py里面通过类来实现的。

首先看看如何创建一个单表:

a. 先定义一个类,继承models.Model, 然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述

models.py

from django.db import models

class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)

b. 注册app

settings.py

INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘app01‘,
]

c.执行命令。 第一条命令会生成一个初始化文件,第二个命令会生成对应的表

python manage.py  makemigrations
python manage.py  migrate

这样,就在PyCharm自带的sqlite数据库里面成功的生成了一个app01_UserInfo的表。这个表默认会有一个自增的id作为主键,另外两个字段是我们通过类创建的。

d. 如果希望使用mysql,因为Django默认使用了MySqldb模块,这个在3.0版本里面不存在,会直接报错。我们需要改为pymysql的模块,方法如下:

在project同名文件夹下的__init__文件中添加如下代码即可:

import pymysql

pymysql.install_as_MySQLdb()

2. 对于单表的增删改查询

查询

获取所有结果,获取到的结果是一个QuerySet的类似列表的对象,每一个元素本身又是一个对象,包括了id,name,password等属性。

obj = models.UserInfo.objects.all()

<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

可以通过filter进行过滤,相当于sql的where语句,因为结果也是QuerySet,因此需要再使用first()获取第一个值

obj = models.UserInfo.objects.filter(id=nid).first()

增加

models.UserInfo.objects.create(username=u,password=p,user_group_id=3)

删除,可以在filter的基础上进行删除

models.UserInfo.objects.filter(id=nid).delete()

修改,有两种常见方式

第一个方式

models.UserInfo.objects.filter(id=nid).update(username=u,password=p)

第二个方式

obj=models.UserInfo.objects.filter(id=nid)
obj.username=u
obj.save()

追问

我感觉我应该是没写错。但是还是出现这个问题。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 手机通知栏里的这个蓝底像微信的聊天软件是什么?求告知!!!各位大神! 有没有一款app是和外国人聊天的,它的界面是蓝色简约的,对话框是蓝色和白色这是什么软件? Rockstar+Games账号创建不了 无效别人专利要多长时间 想无效别人的专利该怎么提报证据呢? 怎么才能无效掉别人的专利? 专利无效的程序是怎么样的? 奥迪Q5购置税 奥迪去2L-e要交购置税 小米8使用移动网络为什么速度很慢,抖音都刷不出来,信号满格的状态,该怎么设置? 为什么小米8边打王者边打电话没声音? 手机格式化后游戏玩不了怎么办? 梦见黄鼠狼求我救她太子是什么意思 怀孕115天有胎动吗 请问怀孕是从月经的第一天算起吗,多少周生?? 十二月五号最后一次月经到现在怀孕多久了 个人电脑什么时候进入中国 计算机哪年引进中国的,在中国的发展史? 中国电脑是在什么年代开始流行的? ...是哪年哪个国家发明的?分别什么时间传入中国的? 一个蓝色方框里有两个白色小人头像,是哪款交友软件的群消息标志? 《樱花校园》模拟器怎么结婚? 樱花校园能结婚吗 手动停车场怎样弄车牌视频? 有了车牌号怎么下视频 健康管理师考试延期到什么时候? 今年健康管理师考试时间会延期吗 2020年健康管理师考试推迟了吗? 2020年的健康管理师考试时间又推迟了吗?收到一条短信说北京地区推迟到2020年了,不知道真假 2020年第一次健康管理师考试会推迟吗? 健康管理师2020年的考试时间是不是改动了? 特别热是什么原因 求复数的运算公式,以及如何用向量表示复数,最好能举例子给我看,我没学过复数, 复数的开方运算公式是什么? 复数运算法则与向量运算 复数是怎样运算 2020年河北省第一批健康管理师考试延期到什么时候? 求3个复数运算公式的证明 复数的加减法运算法则和向量运算的什么法则是一致的。 身上很热是什么原因?