
第六章:SQLAlchemy数据库
shhh702
这个作者很懒,什么都没留下…
展开
-
【Flask数据库】Column常用数据类型详解
文章目录一、sqlalchemy常用数据类型:二、代码实现一、sqlalchemy常用数据类型:Integer:整形(等同于INT)Float:浮点类型(仅最多可存储32位数据,超出则丢失)Double:双精度浮点类型(仅最多可存储64位数据,超出则丢失)Boolean: 传递True/FalseDECIMAL: 定点数类型(无位数限制,可避免数据精度丢失问题...原创 2019-10-17 17:09:28 · 3224 阅读 · 0 评论 -
【Flask数据库】Column常用参数
文章目录#一、Column常用参数:class Article(Base): __tablename__ = 'article' id = Column(Integer,primary_key = True,autoincrement=True) read_count = Column(Integer, default = 11) create_time = C...原创 2019-10-17 18:03:33 · 946 阅读 · 0 评论 -
【Flask数据库】query函数可查询的数据
文章目录一、query可用参数:1、模型对象。指定查找这个模型中的所有对象2、模型中的属性。可以指定只查找某个模型的其中几个属性。3、聚合函数一、query可用参数:1、模型对象。指定查找这个模型中的所有对象articles = session.query(Article).all()for article in articles: print(article)#重新实现__str...原创 2019-10-17 18:12:18 · 1052 阅读 · 0 评论 -
【Flask数据库】filter方法常用过滤条件
文章目录一、过滤条件1、 equals:等于2、 not equals:不等于3、 like:为Column的一个方法,表模糊匹配,like内传入匹配字段。4、 in_:判度胺是否存在5、 not in:判断是否不存在6、 is null:为空7、 is not null:不为空8、and:并,可用逗号表示并,也可通过导入and_9、 or:或备注一、过滤条件过滤是数据提取的重要功能,以下为f...原创 2019-10-17 18:07:43 · 3908 阅读 · 1 评论 -
【Flask数据库】外键及其四种约束讲解
文章目录外键1、外键约束种类:1)RESTRICT:父表数据被删除,会阻止删除。默认就是这一项。2)NO ACTION:在MySQL中,同RESTRICT。3)CASCADE:级联删除。即父表数据被删除,子表也被删除。4)SET NULL:父表数据被删除,子表数据会设置为NULL。2、选定外键约束的种类,通过设定关键字ondelete的值实现:外键通过ForeignKey类来实现,并且可以指定...原创 2019-10-17 18:20:34 · 664 阅读 · 0 评论 -
【Flask数据库】ORM层外键访问方式和一对多
文章目录一对多外键关系一对多外键关系通过sqlalchemy.orm下的relationship实现如一个作者可以有多篇文章,此为一对多关系。以下为通过文章找作者和通过作者找文章的例子:from sqlalchemy.orm import relationshipclass User(Base): ... username = Column(...) articl...原创 2019-10-17 18:11:36 · 439 阅读 · 0 评论 -
【Flask数据库】多对一、一对一关系实现
文章目录一、多表同时添加数据1、多对一关系同时添加实现2、一对一关系同时添加实现:二、一对一关系:表的扩展一、多表同时添加数据1、多对一关系同时添加实现问题描述:以user表和article表为例,先需添加一个作者和此作者的几篇文章,需要在添加作者的同时利用外键特性也将作者的几篇文章添加进去。则可在session.add(user)之前先把特性绑定在要添加的user上,如user.artic...原创 2019-10-17 18:16:12 · 305 阅读 · 0 评论 -
【Flask数据库】多对多关系实现
文章目录一、多对多关系一、多对多关系问题说明:一篇文章可以有多个标签,一个标签下也可以有多个文章。解决方法:构件一张中间表,以存储他们的对应关系。from sqlalchemy import Table创建一个Table对象并在Article类或Tag类内建立relationship时传入secondary = Table对象。即:article_tag =Table(...),ta...原创 2019-10-17 18:15:32 · 330 阅读 · 0 评论 -
【Flask数据库】ORM层面删除数据注意事项
文章目录尽管MySQL默认约束类型为RESTRIC,但若不设置从表中关联列的nullable=False,那么通过sqlalchemy的ORM删除数据不会报错!!class User(Base): __tablename__ = 'user' id = Column(Integer,primary_key=True,autoincrement=True) usernam...原创 2019-10-17 18:11:06 · 297 阅读 · 0 评论 -
【Flask数据库】relationship方法中的cascade参数详解(1-2)
文章目录一、ORM层面的CASCADE1.`save-update`:2.`delete`:3.`delete-orphan`:4.`merge`:5.`expunge`:6.`all`:二、save-update及delete例子一、ORM层面的CASCADE在SALAlchemy中,只要将一条数据添加到session中,和他相关联的数据都可以一起存入。这其实是通过relationship对...原创 2019-10-17 18:14:00 · 1554 阅读 · 0 评论 -
【Flask数据库】三种排序方式详解
文章目录三种排序方法1、order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个‘-’,代表的是降序排序。正序排序为由小到大,倒序排序为由大到小。若针对时间排序,在倒序(从新往旧)排序时需调用desc()方法,或加负号。2、在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式,可以在定义模型的时候就指定排序的方式。1)relationship的order...原创 2019-10-17 18:18:11 · 3941 阅读 · 0 评论 -
【Flask数据库】limit、offset以及切片操作
文章目录1、limit:可以限制每次查询的时候只查询几条数据。2、offset:可以限制查找数据的时候过滤掉前面多少条。3、slice切片:可以对Query对象使用切片操作,来获取想要的数据。1、limit:可以限制每次查询的时候只查询几条数据。class Article(Base): __tablename__ = 'article' id = Column(Integer,...原创 2019-10-17 18:10:36 · 820 阅读 · 0 评论 -
【Flask数据库】数据查询懒加载技术
文章目录懒加载1、lazy可用选项1)'select':默认选项,如果不使用访问对象的某些属性,则不会提取那些属性,如user.articles,在不使用时就不会访问,一旦使用则提取该属性的全部内容并组装成一个列表。2)'dynamic':访问'user.articles'不是返回一个列表,而是`AppenderQuery`对象。3)`immediate`:立刻提取访问对象并提取它的相关属性。懒...原创 2019-10-17 18:19:21 · 383 阅读 · 0 评论 -
【Flask数据库】group_by和having子句
文章目录高级查询:1、group_by2、having高级查询:1、group_by根据某个字段进行分组。比如想要根据性别进行分组,来统计每个分组分别有多少人,那么可以使用以下代码来完成:session.query(User.gender,func.count(User.id)).group_by(User.gender).all()2、havinghaving是对查找结果进一步过滤...原创 2019-10-17 18:08:31 · 1422 阅读 · 0 评论 -
【Flask数据库】join实现复杂查询
文章目录高级查询:1、join方法:高级查询:1、join方法:join查询分为两种,一种是inner join,另一种是outer join。默认的是inner join,如果指定left join或者是right join则为outer join。####内连接:inner join,两张被内连接的表主键不匹配时,不匹配的数据均被抛弃。####外连接:left join是以左表为基准...原创 2019-10-17 18:09:50 · 3149 阅读 · 0 评论 -
【Flask数据库】subquery实现复杂查询
文章目录1、query传统方式分两次查找:2、sql原生传统方式子查找:3、query子查寻方式:class User(Base): __tablename__ = 'user' id = Column(Integer,primary_key = True,autoincrement=True) username = Column(String(50),nullable=...原创 2019-10-17 18:14:59 · 529 阅读 · 0 评论 -
【Flask数据库】`Flask-SQLAlchemy`插件的使用
文章目录###Flask-SQLAlchemy插件的功能为将创建引擎部分做成插件,供flask使用,以连接数据库。###1、用db.Model作为基类创建类表。###2、Column\Integer\String\relationship不再需要导入,用db.Column形式就可以。###3、在定义模型的时候。可以不写__tablename__,则Flask-SQLAlchemy会自动将表...原创 2019-10-17 18:05:54 · 298 阅读 · 0 评论