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

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. MySQL性能调优与架构设计——第3章 MySQL存储引擎简介

    第3章 MySQL存储引擎简介 3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所 ...

  2. cmake安装方法

    由于Ubuntu14.04的cmake版本为2.8.x,而如果需要cmake3.x版本时,无法生成makefile,有两种方法可以安装cmake3.10.0: 方法1: sudo apt-get in ...

  3. 手机打车APP的机遇与挑战

    所谓打车APP,就是个能安装在手机上的打车软件.原理是通过GPS进行定位,能够搜索附近的空车信息然后反馈给用户.同样的,空车信息也会反馈给用户.一般这种啊APP都是跟地图类软件一起的.比如百度地图,谷 ...

  4. [.net 多线程 ]ReaderWriterLock

    ReaderWriterLock 用于同步对资源的访问.在任一特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问.在资源不经常发生更改的情况下,ReaderWriterLock 所提供 ...

  5. WPF程序开机速度策略

    WPF程序开机速度慢是一个很讨厌的问题.具体分析后,可能有以下问题 1.在主线程中加载图像导致 2.初始化各种UserControl导致 3.加载类库导致

  6. 857. Minimum Cost to Hire K Workers

    There are N workers.  The i-th worker has a quality[i] and a minimum wage expectation wage[i]. Now w ...

  7. Python+selenium爬取智联招聘的职位信息

    整个爬虫是基于selenium和Python来运行的,运行需要的包 mysql,matplotlib,selenium 需要安装selenium火狐浏览器驱动,百度的搜寻. 整个爬虫是模块化组织的,不 ...

  8. shell和matlab之间的参数传递

        shell和matlab之间的参数传递比shell和Python之间的参数传递要简单,在matlab程序中(以.m脚本文件为例,其他程序如函数等未测试)不需要进行任何配置,直接使用即可,见下面 ...

  9. 可以避免的10大IT面试误区

    在所有的面试过程当中,很多面试者都普遍犯了这样一个错误——由于对面试准备的不足,所以对于应聘公司的背景,以及一些最基本的信息都缺乏了解,有些面试者甚至对要面试的公司毫无所知.这些数据并不是空穴来风,A ...

  10. win7 64位环境下,为python2.7 安装pip

    第一步: 安装python并配置好环境变量 参见:http://blog.csdn.net/donggege214/article/details/52062855 第二步: 下载setuptools ...