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

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

配置MYSQL

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

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

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}

添加pymysql,由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替,在工程同名的目录里__init__.py下添加

import pymysql
pymysql.install_as_MySQLdb()

表的基本操作

创建表

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

#表名为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的名字
'dongapp2',
命令行进入APP目录,执行下面两条命令:
python ../manage.py makemigrations
python ../manage.py migrate

修改表

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

字段数据类型补充

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

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
forekx=models.ForeignKey("另一个表的类名",to_field="另一个表类的字段名,默认为id字段",default="默认值")
在数据获取中进行跨表取数据
resx = models.Tbuser.objects.filter(id=3).first()
resx.forekx.另一个表类的任意字段名 # resx.forekx为另外表的一行数据对象
添加/修改外键字段的值
#方法一
forekx_id=11
#方法二
forekx=models.XxxxXC.objects.filter(ldong="dongxiao").first()

数据增删改查

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

添加数据

 from dongapp2 import models
#方法一
models.Tbuser.objects.create(userx="dong2",passwd="",age=20)
#方法二
#datax=models.Tbuser(userx="dong3",passwd="1234563",age=20)
#datax.save()

查询数据

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

 from dongapp2 import models

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

删除数据

from dongapp2 import models
resx = models.Tbuser.objects.filter(id=1).delete()

更新数据

from dongapp2 import models
#方法一
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(数据库)的更多相关文章

  1. Python后台开发Django(启动)

    Django版本为:2.1.7 Python的web框架,MTV思想 MVC Model(模板文件,数据库操作)  view(视图模板文件  )controller(业务处理) MTV Model(模 ...

  2. Python后台开发Django( 模板 与 值匹配 )

    模板文件(templates) 在setting.py中,设置模板存放位置 在APP中view的使用 from django.shortcuts import render #导入 def homex ...

  3. Python后台开发Django(会话控制)

    页面跳转 页面跳转的url中必须在最后会自动添加[\],所以在urls.py的路由表中需要对应添加[\] from django.shortcuts import redirect #导入 retur ...

  4. python web开发——django学习(一)第一个连接mysql数据库django网站运行成功

    1.新建一个项目 2.新建一些文件夹方便管理 3.新建一个项目叫message  4.连接数据库 python web开发Django连接mysql 5.在数据库里自动生成django的表  6.运行 ...

  5. Python Web开发:Django+BootStrap实现简单的博客项目

    创建blog的项目结构 关于如何创建一个Django项目,请查看[Python Web开发:使用Django框架创建HolleWorld项目] 创建blog的数据模型 创建一个文章类 所有开发都是数据 ...

  6. Python自动化开发 - Django基础

    本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其 ...

  7. Python自动化开发 - Django【进阶篇】

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  8. Python自动化开发 - Django【基础篇】

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能 ...

  9. python后台架构Django教程——manage.py命令

    一.manage.py命令选项 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行.manage.py接受的是Django提供的内置命令. 内 ...

随机推荐

  1. 更改eclipse的编辑器样式风格

    这里提供两种方法: 1.从网站http://eclipsecolorthemes.org/ 下载,选好自己喜欢的风格后下载epf文件...再使用eclipse的import->preferenc ...

  2. python取txt文件的若干行到另一个文件

    取movie.txt文件的若干行到movie2.txt #取txt文件 的若干行到另一个txt f1 = open(r'F:\movie.txt','rb') f2= open(r'F:\movie2 ...

  3. 安装ipset车祸现场

    基础环境centos6.8内核2.6.32. 本身服务器带的是6.11ipset版本,业务需求,需要升级到6.32 ipset-6.32 ./configure 报错 configure: error ...

  4. 第一天 Java语言概述

    一.什么是软件 软件就是按照特定的顺序把数据和指令组合在一起,能够完成相应功能的程序. 软件分为两种: 系统软件:专门用户运行其他程序的平台.比如Linux.Windows.MAC等 应用软件:完成相 ...

  5. Tensorflow学习-数据读取

    Tensorflow数据读取方式主要包括以下三种 Preloaded data:预加载数据 Feeding: 通过Python代码读取或者产生数据,然后给后端 Reading from file: 通 ...

  6. 【游戏开发】小白学Lua——从Lua查找表元素的过程看元表、元方法

    引言 在上篇博客中,我们简单地学习了一下Lua的基本语法.其实在Lua中有一个还有一个叫元表的概念,不得不着重地探讨一下.元表在实际地开发中,也是会被极大程度地所使用到.本篇博客,就让我们从Lua查找 ...

  7. linux学习之路(3)

    vim编辑器使用  命令模式:控制光标移动,可对文本进行复制.粘贴.删除和查找等工作. 输入模式:正常的文本录入. 末行模式:保存或退出文档,以及设置编辑环境. vim中常用命令: dd 删除(剪切) ...

  8. Windows上安装配置SSH教程(7)——几种方式对比

    服务端:Windows XP 客户端:Windows 10 由于Cygwin也可以安装OpenSSH,所以客户端其实可以直接使用Cygwin安装OpenSSH,那么在Windows下使用SCP(安全拷 ...

  9. python书籍推荐:python编码推荐(高清完整pdf)

    目录INF-qa Python 编码规范................................................................................ ...

  10. java基础(六)-----String性质深入解析

    本文将讲解String的几个性质. 一.String的不可变性 对于初学者来说,很容易误认为String对象是可以改变的,特别是+链接时,对象似乎真的改变了.然而,String对象一经创建就不可以修改 ...