昨天更新了博客不知对各位职场的大佬有没有帮助,如果没有看到的请用小手狠狠地戳这里

Flask中的的SQLAlchemy

今天呢,我们来说一下多对多表的关系,知道不?开始之前我先说一个事,昨晚更新了博客之后我梦到一位女粉丝走到我面请轻轻的吻了我,啧啧啧,味可好了~~~~

1.多对多表关系

from sqlalchemy import Column,Integer,String,ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base() class Girls(Base):
__tablename__ = 'girl'
id = Column(Integer,primary_key=True)
name = Column(String(32))
#表的关系
girl2boy = relationship("Boys",secondary = "hotel",backref = "boy2girl") class Boys(Base):
__tablename__ = 'boy'
id = Column(Integer,primary_key=True)
name = Column(String(32)) class Hotel(Base):
__tablename__='hotel'
id = Column(Integer,primary_key=True)
girl_id = Column(Integer,ForeignKey("girl.id"))
boy_id = Column(Integer,ForeignKey("boy.id")) from sqlalchemy import create_engine
#这里不懂得,戳紫色的字!!
engine = create_engine("mysql+pymysql://root:614615@127.0.0.1:3306/day127?charset=utf8") Base.metadata.create_all(engine)

2.简单的操作

#curd_M2M.py

from sqlalchemy.orm import sessionmaker
from SQL.curd_M2m import engine
from SQL.curd_M2m import Boys,Girls,Hotel
Session = sessionmaker(engine)
db_session = Session() #t通过想Boy添加数据添加girl和hotel数据。relationship反向
boy = Boys(name="李志强")
boy.boy2girl = [Girls(name="哇哈哈"),Girls(name="喜洋洋")]
db_session.add(boy)
db_session.commit()
db_session.close() #t通过想Girl添加数据添加boy和hotel数据。relationship正向
girl_obj = Girls(name="李二短",girl2boy=[Boys(name="任二狗"),Boys(name="任梦")])
db_session.add(girl_obj)
db_session.commit()
db_session.close() # 查询 正向查询
ret = db_session.query(Girls).all()
for girl in ret:
for boy in girl.girl2boy:
#这里说一下,注意表的结构,有很多的小的细节不注意就会报错,查到girl信息,再次遍历的时候注意girl.girl2boy,正向查询
print(girl.name , boy.name) # 查询 反向查询
ret = db_session.query(Boys).all()
for boy in ret:
for girl in boy.boy2girl:
print(boy.name,girl.name)

Flask中的的SQLAlchemy2的更多相关文章

  1. FlASK中的endpoint问题

    先贴一点有关的flask代码,时间有限,我慢慢扩充 以下是flask源码中app.py中add_url_rule的代码. 主要是view_func  -- endpoint -- url 之间的对应关 ...

  2. Flask 中的 SQLAlchemy 使用教程

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

  3. Flask中路由模块的实现

    在Flask中的路由功能主要通过修饰函数route实现,下面我们就来挖掘下route在源代码中是怎么分配视图函数的. def route(self, rule, **options): def dec ...

  4. Flask中全局变量的实现

    我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...

  5. python web开发-flask中日志的使用

    Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...

  6. Flask中使用数据库连接池 DBUtils ——(4)

    DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程 ...

  7. 第七篇 Flask 中路由系统以及参数

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  8. 第六篇 flask中session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...

  9. 第四篇flask中模板语言 jinja2

    Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...

随机推荐

  1. 三年经验的C,超过两题答不出请离开软件界

    1.double free是什么问题?申请地址与释放地址不一致会有什么问题? 2.main函数最多有几个参数?各是什么作用? 3.crt是什么?编译器是怎么样连接crt的(描述cl或者gcc方式) 4 ...

  2. iOS play video

    iOS: How to use MPMoviePlayerController up vote6down votefavorite 3 I've created a blank project (iO ...

  3. (转)自制AutoMapper实现DTO到持久层Entity的转换

    原文地址:http://www.cnblogs.com/qidian10/p/3173907.html 项目中经常涉及到页面DTO更新,保存到数据库的操作,这就必然牵扯到DTO和持久层对象的转换,常见 ...

  4. 设计模式05: Prototype 原型模式(创建型模式)

    Prototype 原型模式(创建型模式) 依赖关系的倒置抽象不应该依赖于实现细节,细节应该依赖于抽象.对所有的设计模式都是这样的. -抽象A直接依赖于实现细节b -抽象A依赖于抽象B,实现细节b依赖 ...

  5. POJ3020 Antenna Placement(二分图最小路径覆盖)

    The Global Aerial Research Centre has been allotted the task of building the fifth generation of mob ...

  6. 模板方法(Template Method)模式

    /* * 抽象模版(AbstractClass)角色有如下的责任: 定义了一个或多个抽象操作,以便让子类实现.这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤. 定义并实现了一个模版方法.这个模 ...

  7. 我用Django搭网站(2)-QQ登录

    接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. 第一步:准备阶段 打开QQ互联,并登录你的QQ账号.再点击导航上的" ...

  8. query聚类技术

    query聚类 目的 query聚类主要有以下两个目的 解决query空间稀疏问题(长尾query) 挖掘用户意图(一条行为包含的意图是稀疏的,当有一簇行为时,意图更明确) 可以说聚类是构建内容模型的 ...

  9. 巧用Scrum与Kanban

    本文来自网易云社区 文\屈鹏飞 在互联网行业的项目管理实践中,敏捷和精益一直是大家所提倡的思想,其中Scrum和Kanban方法作为即敏捷又精益的典型代表,许多PM都在研究,笔者近期也在学习和实施Sc ...

  10. leecode刷题(2)-- 买卖股票的最佳时机

    买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多 ...