------------------------------------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. 内网渗透 day8-linux提权和后门植入

    linux提权和后门植入 目录 1. 脏牛漏洞复现 3 (1) 去网上把代码复制然后touch一个.c文件,vi或者vim打开将代码复制进去保存 3 (2) 进入shell然后从kali开的apach ...

  2. php获取快手视频id

    <?php $url = "http://www.gifshow.com/s/xxxxxx"; //初始化 $curl = curl_init(); //设置抓取的url c ...

  3. 21迁移python项目到另一台电脑

    在虚拟环境中将第三方库打包到一个TXT文件:1,在项目保存在项目所在目录,文件可以自定义.pip freeze> requirements.txt命令2,将requirements.txt放入另 ...

  4. spring处理静态资源方式

    1. <mvc:default-servlet-handler/>default-servlet-handler在SpringMVC上下文定义一个org.springframework.w ...

  5. 创建Grafana监控视图

    前言 Grafana允许查询,可视化,警报和了解指标,无论它们存储在哪里. 可视化:具有多种选项的快速灵活的客户端图.面板插件提供了许多不同的方式来可视化指标和日志. 动态仪表盘:使用模板变量创建动态 ...

  6. Python_Tips_dump\load 和 dumps\loads 的区别与联系

    dump\load  和 dumps\loads 的区别与联系 """ Python3 JSON模块的使用 参考链接:https://docs.python.org/3/ ...

  7. 创建Spring Cloud聚合项目

    使用maven创建单一项目的时候通常用不到聚合项目,创建spring cloud项目时候,由于下面都是一个一个微服务,每个服务对应一个项目,这就需要用到聚合项目,方便对依赖和项目之间的关系进行管理,使 ...

  8. scrapy学习之爬虫练习平台35

    前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...

  9. linux执行cmd之一

    执行方法: 1.手动执行 2.程序执行 涉及到的权限问题: 1.应用程序的权限 2.被执行文件的权限

  10. 算法基础——Trie字符串统计

    原题链接 题目: 维护一个字符串集合,支持两种操作: "I x"向集合中插入一个字符串x: "Q x"询问一个字符串在集合中出现了多少次. 共有N个操作,输入的 ...