------------------------------------2019-08-22 17:53:54更新------------------------------

SQLALchemy实在是难啊,这次写的不好,菜鸡落泪。下次抽空更新的时候,会尽量把SQLALchemy详细更新完。先写写下次更新什么。filter和filter_by的差别,filter的用法,relation关系中cascade级联的操作和lazy的详解,db.Column中的几个参数。SQLALchemy中的偏易和切片,limit,offset,slice,[]。group_by和having。join,排序方法,子查询等xxx我的天啊,数据库太难了吧,(菜鸡忍住不哭)为之前感觉数据库学着简单感到惭愧。。。。

-------------------------------------------------------------------------------------------------

00x1

  SQLALchmey是一个库,运用这个库可以避免SQL语句所造成的低端错误。

在运用SQLALchemy之前要先pip install 安装一下,这样才能够进行导入

  具体运用增删改查

 增:

admin = User(username='admin', password='root',email='admin@example.com')
db.session.add(admin) # 提交一条数据
db.session.commit()
#commit是提交事务

其中User是一个数据表

 删除:

  #1.先将要修改的数据查找出来
admin = User.query.filter(User.username == 'admin').first()
#2.把这条数据删除
db.session.delete(admin)
#3.做事务的提交
db.session.commit()

修改:

#1.先将要修改的数据查找出来
admin = User.query.filter(User.username == 'admin').first()
#2.将这条数据你需要进行修改的地方进行修改
admin.username = 'root'
#3.做事务的提交
db.session.commit()

查询:

#select * from User where User.username='admin'
#1.先将要修改的数据查找出来
admin = User.query.filter(User.username == 'admin').first()
print(admin.username)
print(admin.password)

00x2 几个复杂的逻辑关系:

  一对一,一对多,多对多。这个地方比较恶心,不容易分清,经常用到的就是一对多,多对多的关系,一对一的基本上是没有见到过。

一对多指的是比如一个用户只能是和多个文章在一起。这里面需要额外了解的是主键和外键,主键是一个数据表中必须指明的,没有指明主键的话,在创建数据表的时候会出错。外键是一个连接的作用,通过外键可以从一张数据表查找到另外一张数据表。

数据库中一对一关系:

  

class User(db.Model):

    __tablename__ = 'user'
id = db.Column(db.Integer , nullable=False ,primary_key=True)
username = db.Column(db.String(50))
class Artcile(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer , nullable=False ,primary_key=True)
content = db.Column(db.String(100) , nullable=False)
uid = db.Column(db.Integer ,db.ForeignKey('user.id'))
author = db.relationship("User" , backref = "balala")
# 创建外键,使得两张表之间进行关联

多对多关系:

tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('page_id', db.Integer, db.ForeignKey('page.id'))
) class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', secondary=tags, backref=db.backref('pages', lazy='dynamic')) class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)

-------先回家,回家更新-----------------------------------------------------------

flask中SQLAlchemy学习的更多相关文章

  1. python web开发-flask中sqlalchemy的使用

    SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1.       创建一个sqlalchemy的Model模块 创建 ...

  2. Flask框架的学习与实战(一):开发环境搭建

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在 ...

  3. Flask 中的 SQLAlchemy 使用教程

    Flask 是一个 python web micro framework.所谓微框架,主要是 flask 简洁与轻巧,自定义程度高.相比 django 更加轻量级. 之前一直折腾 django,得益于 ...

  4. Python框架学习之Flask中的数据库操作

    数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中.如用户名.密码等等其他信息.Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类 ...

  5. Python框架学习之Flask中的视图及路由

    在前面一讲中我们学习如何创建一个简单的Flask项目,并做了一些简单的分析.接下来在这一节中就主要来讲讲Flask中最核心的内容之一:Werkzeug工具箱.Werkzeug是一个遵循WSGI协议的P ...

  6. Flask学习【第11篇】:整合Flask中的一些知识点

    SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from sq ...

  7. Python框架学习之Flask中的常用扩展包

    Flask框架是一个扩展性非常强的框架,所以导致它有非常多的扩展包.这些扩展包的功能都很强大.本节主要汇总一些常用的扩展包. 一. Flask-Script pip install flask-scr ...

  8. Python框架学习之Flask中的蓝图与单元测试

    因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...

  9. Python框架学习之Flask中的Jinja2模板

    前面也提到过在Flask中最核心的两个组件是Werkzeug和Jinja2模板.其中Werkzeug在前一节已经详细说明了.现在这一节主要是来谈谈Jinja2模板. 一.为什么需要引入模板: 在进行软 ...

随机推荐

  1. 安装node.js和vue

    1.在官网上下载Node.js安装包  https://nodejs.org/zh-cn/ 2.点击安装,一直下一步下一步就行,这里就不在赘述了. 3.安装完之后,如果没有选安装路径的话,一般都是在[ ...

  2. JavaScript变量声明与变量声明提前

    JavaScript变量声明 JavaScript中存储数据的容器称为变量.用关键字和标识符创建新变量的语句,称为变量声明.可以通过关键字var进行变量声明,在ES6中增加了let.const关键字声 ...

  3. 云原生haproxy 代理-ebpf

    在如下网络层面下,代理(比如Envoy nginx )执行额外的L7策略(Health checks, service discovery, load balancing, mutual TLS),其 ...

  4. IP/TCP/UDP checsum

    今天调试bug时, 忘了将原始的check_sum值reset,导致发包-抓包后发现.check-sum 错误. 来看一看check-sum:简单讲就是对要计算的数据,以16bit为单元进行累加,然后 ...

  5. Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...

  6. 渗透测试神器Cobalt Strike使用教程

    Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器.Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队 ...

  7. 深度分析:那些Java中你一定遇到过的问题,一次性帮你搞定!深度分析:那些Java中你一定遇到过的问题,一次性帮你搞定!

    1.java中==和equals和hashCode的区别 基本数据类型的比较的值相等.类的比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如St ...

  8. ABBYY FineReader如何将图片转换为Excel

    ABBYY FineReader的OCR文字识别功能很强大,不但可以将文件转换为文本文档或Word文档,也可以识别PDF文件或者图片上的表格,并且转换为Excel文件.下面我就为大家演示一下怎么用AB ...

  9. 如何在PDF文档上加水印

    当我们需要传输一些比较重要的文件时,往往会选择将文档转换为PDF文件,避免其他人复制.更改文档的内容. pdfFactory不仅可以为用户提供快速创建PDF的功能,同时还提供了添加水印的功能.有了水印 ...

  10. 今天谁也别想阻止我好好学习!「CDR 6·18特惠倒计时2天!」

    前几天小编刷抖音,一个以农夫山泉为创作背景的服装原创视频 让我为之一震 这个自称以捡瓶子为生的服装设计师 让我产生了极为浓烈的兴趣 细扒这位小姐姐的视频 她用身边的常见物品 脑洞大开的画出了一系列插画 ...