------------------------------------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. Spider--补充--Re模块_1

    # @ Author : Collin_PXY # 正则表达式: import re # 1,分步写法: # 1)rule.search(string) pattern='各小区' rule=re.c ...

  2. tcp syn-synack-ack 服务端发送syn-ack

    tcp_v4_send_synack()用于发送SYNACK段,在tcp_v4_conn_request()中被调用. 首先调用tcp_make_synack()构造SYNACK段,主要是构造TCP报 ...

  3. kafka事务

    Kafka 从 0.11 版本开始引入了事务支持.事务可以保证 Kafka 在 Exactly Once 语义的基 础上,生产和消费可以跨分区和会话,要么全部成功,要么全部失败. 开启幂等性的 Pro ...

  4. MySQL 连接为什么挂死了?

    摘要:本次分享的是一次关于 MySQL 高可用问题的定位过程,其中曲折颇多但问题本身却比较有些代表性,遂将其记录以供参考. 一.背景 近期由测试反馈的问题有点多,其中关于系统可靠性测试提出的问题令人感 ...

  5. Linux_Python版本控制

    第1步:更新gcc,因为gcc版本太老会导致新版本python包编译不成功 复制代码代码如下: yum -y install gcc 系统会自动下载并安装或更新,等它自己结束 第2步:安装wget,这 ...

  6. Python_列表相减(判断长度后长的减短的)

    #定义一个方法,可进行列表相减 class V(object): def __init__(self,*value): self.value=value def __sub__(self,other) ...

  7. linux正则表达式符号集

    \     转义符,忽略其特殊意义: ^  以--开始,^A  以A开始: $ 以--结束,A$ 以A结尾: ^$ 空行: * 0个或多个*前面的任意字符 . 匹配换行符\n之外的任意字符: .* 匹 ...

  8. Cassandra存储附带索引(SAI)全新上线

    新一代Apache Cassandra索引现已在Astra和DataStax Enterprise 6.8.3中正式开放使用 (general availability or GA),很快您也将在开源 ...

  9. curl 超时问题解决

    curl -o /dev/null -s -w %{time_namelookup}---%{time_connect}---%{time_starttransfer}---%{time_total} ...

  10. 兄弟萌,这份SpringMVC框架学习笔记真的建议反复看,写的太细了

    概述 是Spring为展现层提供的基于MVC设计理念的Web框架,通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口 支持REST风格的URL请求 采用松散耦合的可插拔组件结构,比 ...