这变化也忒快了吧。连问题的题目都变了

这是原题目的回答,多对多关系。

这是我设置的一个博客文章与tag多对多关系的模型,希望对你有所帮助。

class TagSpaces(db.Model):

"""多对多关系表"""

__tablename__ = 'tag_spaces'

tag_id = db.Column(db.Integer, db.ForeignKey('tags.id'), primary_key=True)

article_id = db.Column(db.Integer, db.ForeignKey('articles.id'), primary_key=True)

timestamp = db.Column(db.DateTime, default=datetime.utcnow)

class Tag(db.Model):

"""tag表"""

__tablename__ = 'tags'

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(64), unique=True, index=True)

tagged = db.relationship('TagSpaces',

foreign_keys=[TagSpaces.tag_id],

backref=db.backref('tagged', lazy='joined'),

lazy='dynamic',

cascade='all, delete-orphan')

def __repr__(self):

return '' % self.name

class Article(db.Model):

"""article 表"""

__tablename__ = 'articles'

id = db.Column(db.Integer, primary_key=True)

title = db.Column(db.String(64), index=True)

body = db.Column(db.Text)

......

......

......

tags = db.relationship('TagSpaces',

foreign_keys=[TagSpaces.article_id],

backref=db.backref('tags', lazy='joined'),

lazy='dynamic',

cascade='all, delete-orphan')

def tag(self, tag):

"""写文章的时候,直接往TagSpaces关联表里添加需要关联的 tag 标签"""

if not self.is_tagging(tag):

t = TagSpaces(tags=self, tagged=tag)

db.session.add(t)

def untag(self, tag):

"""从TagSpaces关联表里删除相关标签"""

f = self.tags.filter_by(tag_id=tag.id).first()

if f:

db.session.delete(f)

def is_tagging(self, tag):

"""判断相关标签是否与文章进行了关联"""

return self.tags.filter_by(tag_id=tag.id).first() is not None

@property

def taggeds(self):

"""以article类属性的形式,返回文章的tag标签实例"""

return Tag.query.join(TagSpaces, TagSpaces.tag_id == Tag.id).filter(TagSpaces.article_id == self.id)

article = Article.query.get(1) # 查询一篇文章,返回一个实例对象

print article.taggeds # 返回该篇文章关联的所有 tag 标签的实例对象。

for tag in article.taggeds:

print tag.name

# 循环返回所有的标签的名称

python封装sql脚本_flask-sqlalchemy如何使用原生的sql语句然后封装?相关推荐

  1. linux执行db2的sql脚本,LinuxShell自动执行当前目录所有DB2 SQL语句

    该shell脚本用于自动执行当前目录下所有的SQL语句,分为以下几个步骤: 步骤1.删除当前目录下已存在的log日志文件 #删除当前目录下log日志文件 for test1 in `ls` do re ...

  2. 【Java与Python实现】最实际与高效生成数据库高级声明式SQL脚本神器研发

    一. 简介 1.1前言 1.2作用 二. 实现方式与原理 2.1实现方式 2.2原理 三. 体系与图解 3.1创建表与插数据脚本 3.2添加或修改表脚本 3.3删除表脚本 3.4删除与创建索引脚本 3 ...

  3. mysql读取sql脚本_Pandas直接读取sql脚本的方法

    之前有群友反应同事给了他一个几百MB的sql脚本,导入数据库再从数据库读取数据有点慢,想了解下有没有可以直接读取sql脚本到pandas的方法. 解析sql脚本文本文件替换成csv格式并加载 我考虑了 ...

  4. 最实际与高效生成数据库高级声明式SQL脚本神器研发

    一. 简介 1.1前言 1.2作用 二. 实现方式与原理 2.1实现方式 2.2原理 三. 体系与图解 3.1创建表与插数据脚本 3.2添加或修改表脚本 3.3删除表脚本 3.4删除与创建索引脚本 3 ...

  5. linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现

    使用过的命令: 进入db2cmd db2 connect todb_aliasuserusernameusingpassword db2 -tvfc:\abc.sql-labc.log 参考如下: 可 ...

  6. MySQL 命令行下执行.sql脚本

    1.首先编写sql脚本,保存为的:book.sql,内容如下:  1use test;  2create table book   3(   4tisbn varchar(20) primary ke ...

  7. MySQL命令行下执行.sql脚本详解

    本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sq ...

  8. MySQL执行外部sql脚本文件的命令( source命令执行sql )

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之 ...

  9. mysql执行文件脚本文件_MySQL执行外部sql脚本文件的命令

    sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为"sql脚本文件"),然后通过相关的命令执行这个sql脚本文件.基本步骤如下: ...

  10. kettle 常用输出(插入更新、表输出、执行 SQL 脚本)

    上一篇 文章 ,主要讲了 kettle 的原理.安装及简单的使用.其中用到了一种输出方式:插入更新. 这篇文章,主要介绍下常用的输出方式:插入更新.表输出.执行 SQL 脚本. 插入更新 插入更新,顾 ...

最新文章

  1. 发送文件到打印机,打印机收不到(无线打印机)
  2. CTFshow 命令执行 web54
  3. apkTool反编译apk碰到的问题
  4. [hackinglab][CTF][解密关][2020] hackinglab 解密关 writeup
  5. Flask框架——路由和视图
  6. struts与spring整合方法copy
  7. jquery Datatables 行数据删除、行上升、行下降功能演示
  8. [原创]软件测试工具简介及下载地址(不定时更新)
  9. 2021年电工杯B题附代码、附论文——光伏建筑一体化板块指数发展趋势分析及预测
  10. Unity 实现两个向量夹角为0~360度
  11. RedHat8.0配置本地yum源
  12. 腾讯发布叮当助手,人工智能语音助手将赋能智能电视
  13. 2010上半年网络规划设计师上午试卷、标准答案及分析Ⅱ
  14. golang中的并发竞争态
  15. 《图解HTTP》阅读总结(上)
  16. 【GAMES-202实时渲染】3、预计算环境光照(球谐函数(SH)、IBL、Split Sum、环境光阴影计算(PRT))
  17. 数据采集爬虫ip代理基本原理
  18. python中tkinter模块pack_Python tkinter模块和参数
  19. http上传文件 pda java_通过HTTP协议上传文件
  20. 【JZOJ 省选模拟】多项式(poly)

热门文章

  1. 【MySQL】MySQL 数据库表锁和行锁
  2. 【Elasticsearch】all shards failed no shard available for get .xxx[doc] routing null
  3. 20-10-025-安装-KyLin-2.6.0-单机版安装(MAC官网下载)成功
  4. 【MySQL】mysql查看库 表占用存储空间大小
  5. 【Git】Git如何在不提交当前分支的情况下切换到其它分支进行操作-git stash
  6. 95-130-340-源码-source-kafka相关-FlinkKafkaConsumer分析
  7. 群晖能从linux备份数据吗,通过rsync将Linux服务器数据备份到群晖
  8. solr 6.5.1 创建core失败的原因 Can‘t find resource ‘solrconfig.xml‘
  9. Mybatis判断表是否存在
  10. 学习笔记:可持久化线段树(主席树):静态 + 动态