python学习第六十八天:数据库相关操作

ORM简介

orm能干的事:
	1 创建表,修改表,删除表
	2 插入数据
	3 修改数据
	4 删除数据
不能干:不能创建数据库

类名-----》表

对象------》一条数据

属性-----》字段

ORM“对象-关系-映射”的简称

#sql中的表                                                      

 #创建表:
     CREATE TABLE employee(
                id INT PRIMARY KEY auto_increment ,
                name VARCHAR (20),
                gender BIT default 1,
                birthday DATA ,
                department VARCHAR (20),
                salary DECIMAL (8,2) unsigned,
              );

  #sql中的表纪录                                                  

  #添加一条表纪录:
      INSERT employee (name,gender,birthday,salary,department)
             VALUES   ("alex",1,"1985-12-12",8000,"保洁部");               

  #查询一条表纪录:
      SELECT * FROM employee WHERE age=24;                               

  #更新一条表纪录:
      UPDATE employee SET birthday="1989-10-24" WHERE id=1;              

  #删除一条表纪录:
      DELETE FROM employee WHERE name="alex"                             

#python的类
class Employee(models.Model):
     id=models.AutoField(primary_key=True)
     name=models.CharField(max_length=32)
     gender=models.BooleanField()
     birthday=models.DateField()
     department=models.CharField(max_length=32)
     salary=models.DecimalField(max_digits=8,decimal_places=2)

 #python的类对象
      #添加一条表纪录:
          emp=Employee(name="alex",gender=True,birthday="1985-12-12",epartment="保洁部")
          emp.save()
      #查询一条表纪录:
          Employee.objects.filter(age=24)
      #更新一条表纪录:
          Employee.objects.filter(id=1).update(birthday="1989-10-24")
      #删除一条表纪录:
          Employee.objects.filter(name="alex").delete()

使用mysql步骤

	0 创建数据库(orm不能创建数据库)
	1 在settings里配置
	2 在app的init.py文件里写上:import pymysql
								pymysql.install_as_MySQLdb()
	3 在models里定义类,类必须继承 models.Model
	4 写属性,对应着数据库的字段
	5 执行 python manage.py makemigrations(相当于做一个记录)
	6 执行 pyhton manage.py migrate (会把记录执行到数据库)

	创建出来的表名是app的名字_类名

settings配置

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘: ‘lqz‘,
        ‘USER‘: ‘root‘,
        ‘PASSWORD‘: ‘123456‘,
        ‘HOST‘: ‘127.0.0.1‘,
        ‘PORT‘: 3306,
        ‘ATOMIC_REQUEST‘: True,
        ‘OPTIONS‘: {
            "init_command": "SET storage_engine=MyISAM",
        }
    }
}
‘‘‘
‘NAME‘:要连接的数据库,连接前需要创建好
‘USER‘:连接数据库的用户名
‘PASSWORD‘:连接数据库的密码
‘HOST‘:连接主机,默认本机
‘PORT‘:端口 默认3306
‘ATOMIC_REQUEST‘: True,
设置为True统一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。
是全局性的配置, 如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器
‘OPTIONS‘: {
             "init_command": "SET storage_engine=MyISAM",
            }
设置创建表的存储引擎为MyISAM,INNODB

表的查询

<1> all():                  查询所有结果

<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象

<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,
                            如果符合筛选条件的对象超过一个或者没有都会抛出错误。

<4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象

<5> order_by(*field):       对查询结果排序

<6> reverse():              对查询结果反向排序

<8> count():                返回数据库中匹配查询(QuerySet)的对象数量。

<9> first():                返回第一条记录

<10> last():                返回最后一条记录

<11> exists():              如果QuerySet包含数据,就返回True,否则返回False

<12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                            model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

<14> distinct():            从返回结果中剔除重复纪录

表关系创建


一个出版社可以出版多本书,一本书只能有一个出版社
	一对多(一旦确立了一对多的关系,关联字段要放在多的表里)
	models.ForeignKey(to=‘Publish‘,to_field=‘nid‘,on_delete=models.CASCADE)

一个作者可以写多本书,一本书可以有多个作者
	多对多(需要第三张表)
	models.ManyToManyField(to=‘Author‘)

一对一
	author和author_detail是一对一
	models.OneToOneField(to=‘AuthorDatail‘,to_field=‘nid‘,unique=True,on_delete=models.CASCADE)

原文地址:https://www.cnblogs.com/luck-L/p/9575776.html

时间: 2024-10-05 22:56:42

python学习第六十八天:数据库相关操作的相关文章

cakephp v3.4 数据库相关操作

cakephp v3.4 数据库相关操作 查询对象 Query Objectclass Cake\ORM\Query 获取Query object表对象 Table Object 使用find()返回 1.任何情况下都可以从TableRegistry中获取use Cake\ORM\TableRegistry;$articles = TableRegistry::get('Articles');$query = $articles->find(); 2.在对应的控制器中(框架自动就创建了)$que

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #

python学习第四十八天json模块与pickle模块差异

在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点  跨语言,体积小 缺点 只能支持 int str list tuple dict pickle 的优点和缺点 优点 专门为python设计,支持python所有的数据类型 缺点 只能python使用,存储数据占空间大 文章来自 www.96net.com.cn 原文地址:https://www.cnblogs.com/96net/p/97806

【Python】入门学习六 列表及其相关操作

我们在生活中常常会列出自己的List,比如购物清单,待办事项等.编程来源于生活,在Python,列表也是Python中常见的数据类型之一.下面讲述列表的相关操作. 1.创建列表 列表可以包含Python能存储的任何类型的数据,包括数字.字符串.变量.甚至其他列表.列表中的元素可以是不同类型. ①列表名 = [ ] 创建一个空列表,随后再更新列表里的元素值. ②也可以在创建列表的同时赋值.列表名 = [元素1, 元素2, ... ]. 2.访问列表中的元素及列表“分片”操作 列表中的元素都有自己的

[Python] 学习笔记之MySQL数据库操作

1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择跟自己项目相关的数据库.Python DB-API支持的数据库如下所示: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 不同的数据库你需要下载不同的DB API模块,例如

python中MySQL数据库相关操作

一 安装基本环境: 1 安装MySQL数据库, 本文使用的是mariadb数据库,与MySQL相似 1 挂载镜像文件(本次使用的是本地镜像文件) 2 启动MySQL数据库 3 创建用户名和密码并刷新 grant all(表示所有操作) on .(库.表(所有的,也可以指定)) to [email protected](设置用户名为root,链接为本地链接) identified by 'roiot123';(设置密码)flush privileges;(刷新权限) 4 修改默认字符集: serv

MFC 对MYSQL数据库相关操作

记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用.虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的. MFC连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用MySQL提供的C语言API来进行操作蛮方便的,所以在此记录下相关的操作. 要用MySQL提供的C语言API,首先要包含API的头文件目录,也就是在MFC工程属性中的"包含目录"下添加MySQL安装目录的"include"文件夹.

WinPhone开发数据库相关操作总结

1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式: (1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误) (2)第二种跟第一种有所类似

python基础===【字符串】所有相关操作

#字符串的相关操作 #基本操作 #+ 字符串连接操作 str1 = '来是come走是go' str2 = '点头yes摇头no' result = str1 + str2 print(result) #* 字符串复制操作 str1 = '天地不仁以万物为刍狗' result = str1 * 3 print(result) #[] 索引操作 str1 = '柳暗花明又一村' print(str1[1]) print(str1[-2]) #[::]取片操作 str1 = '山重水复疑无路' #获