Python后台开发Django(数据库)

编程之家收集整理的这篇文章主要介绍了Python后台开发Django(数据库)编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

如果使用pyMysqL,则可以在view中直接import pyMysqL进行操作,与原操作无区别

Django数据库框架支持 sqlite3,MysqL,Postgresql数据库,只需要在settings.py中配置即可,与数据库相关的代码一般写在models.py中

配置MysqL

ORM操作:默认使用文件自带的db.sqlite3数据库,如果需要使用MysqL数据库则需要进行以下配置

在setting.py中替换数据库配置

@H_301_12@
DATABASES = {
    'default': {
    ENGINE': django.db.backends.MysqL,NAME':dbnameUSERrootPASSWORDxxxHOST''PORT添加pyMysqL,由于Django内部连接MysqL时使用的是MysqLdb模块,而python3中还无此模块,所以需要使用pyMysqL来代替,在工程同名的目录里__init__.py下添加

@H_301_12@
import pyMysqL
pyMysqL.install_as_MysqLdb()

表的基本操作

创建表

在对应APP的models.py中,如果创建多表则在此文件添加类即可

@H_301_12@
#表名为dongapp2_tbuser
#属性为字段名,默认会创建主键为自增ID列修改id列的字段名:iddong=models.AutoField(primary_key=True)
class Tbuser(models.Model):
    userx=models.CharField(max_length=32) 类型为:varchar(32)
    passwd=models.CharField(max_length=64)可以添加实参【null=True】,表示值可以为空
    age=models.IntegerField() 类型为:integer
settings.py的INSTALLED_APPS=[  ]注册添加APP的名字
@H_301_12@
dongapp2',
命令行进入APP目录,执行下面两条命令:
@H_301_12@
python ../manage.py makemigrations
python ../manage.py migrate

修改

修改或者删除字段时都需要进行两条命令的执行,models.py中的数据库映射时时刻刻绑定着原数据,执行两条命令后会进行数据表结构同步

字段数据类型补充

所设置的字段类型大部分是不会在编写增删改查时进行自动验证,而是有益于Django自带的admin管理后台应用

@H_301_12@
xx=models.EmailField(null=True)邮箱格式,Django自带用户管理页使用
xx=models.URLField(null=True)URL格式
xx=models.GenericIPAddressField(null=True)IP4或者IP6格式
xx=models.BooleanField()bool类型
xx=models.FloatField()浮动数
xx=models.DateField()类似于data =>YYYY-MM-DD
xx=models.DateTimeField()类似于datatime =>YYYY-MM-DD HH:mm:ss
xx=models.TimeField() 时间

字段实参:

null             #是否可为空,默认不可为空,如【unll=True】可为空

default          #默认值

primary_key     #主键

db_column      #数据库中数据表的字段名

db_index        #是否建立索引

auto_now_add   #创建当前行时自动添加为当前时间,【xx=models.DateTimeField(auto_now_add=True)】

auto_now       #更新当前行时自动更新为当前时间,仅支持下面的更新数据方法

外键

在建立表字段时添加,外键字段在数据库中为:forekx_id
@H_301_12@
forekx=models.ForeignKey("另一个表的类名",to_field=另一个表类的字段名,默认为id字段默认值")
在数据获取中进行跨表取数据
@H_301_12@
resx = models.Tbuser.objects.filter(id=3).first()
resx.forekx.另一个表类的任意字段名   resx.forekx为另外表的一行数据对象
添加/修改外键字段的值
@H_301_12@
方法
forekx_id=11
方法
forekx=models.XxxxXC.objects.filter(ldong=dongxiao").first()

数据增删改查

数据的操作一般会在 view(业务处理)中进行

添加数据

@H_301_12@
1 from dongapp2  models
2 方法
3 models.Tbuser.objects.create(userx=dong21234562)
4 方法
5 datax=models.Tbuser(userx="dong3",passwd="1234563",age=20)
6 datax.save()

查询数据

Filter条件补充:Id字段大于等于0:【id__gt=0】

@H_301_12@
 1  2 
 3 查询输出列表
 4  # resx=models.Tbuser.objects.all()#查询所有,查询结果为[对象,对象]
 5  resx = models.Tbuser.objects.filter(userx="dong1",age=10)  # 条件查询,and
 6  countx = len(resx)  # 得到查询的总行数
 7  for rowx in resx:  # 循环输出值,控制台接收(开启服务的地方)
 8     print(rowx.id,rowx.userx,rowx.age)
 9  resx=models.Tbuser.objects.all().values("id","name")#查询所有并获取指定字段数据,查询结果[字典,字典]
10 
11  查询第一个,返回非列表
12  resx = models.Tbuser.objects.filter(id=3).first()
13  if resx:
14     print(resx.age)
15 
16 返回查找的总行数
17 resx = models.Tbuser.objects.filter(passwd=").count()

删除数据

@H_301_12@
 models
resx = models.Tbuser.objects.filter(id=1).delete()

更新数据

@H_301_12@
方法
resx = models.Tbuser.objects.filter(id=3).update(age=30方法
resxobj = models.Tbuser.objects.filter(id=3).first()
resxobj.age=100
resxobj.save()

相关文章

总结

以上是编程之家为你收集整理的Python后台开发Django(数据库)全部内容,希望文章能够帮你解决Python后台开发Django(数据库)所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

猜你在找的Python相关文章

微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误。 —— Edsger Dijkstra 目录 本节我
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 目录 本节我们来介绍闭包与装饰器。 闭包与
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 —— Nicklaus Wirth 目录 从这句话程序 = 算法 +
微信公众号:码农充电站pro 个人主页: 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 —— Joshua Bloch 目录 1,什么是计算机编码 编码 从一种形式 到另一种形式的过程,就
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了。 —— Norm Schryer 目录 前几节我们已经介绍
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 软件工程的目标是控制复杂度,而不是增加复杂性。 —— Dr. Pamela Zave 目录 我们在上
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢。 —— Roy Carlson 目录 Python 字典是另一种非常实用
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了。 —— Carig Zerouni 目录 前几节我们介
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注