创建多对多表

  1. from sqlalchemy.ext.declarative import declarative_base
  2. Base=declarative_base()
  3.  
  4. from sqlalchemy import Column,String,Integer,ForeignKey
  5. from sqlalchemy.orm import relationship
  6.  
  7. class Girl(Base):
  8. __tablename__="girl"
  9. id = Column(Integer,primary_key=True)
  10. name=Column(String(32))
  11. #secondary="Hotel" 表示两个表关联Hotel
  12. girl2boy = relationship("Boy",secondary="hotel",backref="boy2girl" )
  13.  
  14. class Boy(Base):
  15. __tablename__ = "boy"
  16. id = Column(Integer,primary_key=True)
  17. name = Column(String(32))
  18.  
  19. class Hotel(Base):
  20. __tablename__ = "hotel"
  21. id=Column(Integer,primary_key=True)
  22. girl_id =Column(Integer,ForeignKey("girl.id"))
  23. boy_id=Column(Integer,ForeignKey("boy.id"))
  24.  
  25. from sqlalchemy import create_engine
  26. engine=create_engine("mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8")
  27.  
  28. Base.metadata.create_all(engine)

添加多对多数据

  1. from sqlalchemy.orm import sessionmaker
  2. from SQL.M_M import engine,Boy
  3.  
  4. Session=sessionmaker(engine)
  5. db_session=Session()
  6. #反向添加
  7. # boy_obj=Boy(name="kobe")
  8. # boy_obj.boy2girl =[Girl(name="dva"),Girl(name="xiaoemi")]
  9. # db_session.add(boy_obj)
  10. # db_session.commit()
  11. # db_session.close()
  12. #正向添加
  13. # girl_obj=Girl(name="anna",girl2boy=[Boy(name="curry"),Boy(name="green")])
  14. # db_session.add(girl_obj)
  15. # db_session.commit()
  16. # db_session.close()
  17. #正向查询
  18. # g_list=db_session.query(Girl).all()
  19. # for row in g_list:
  20. # for item in row.girl2boy:
  21. # print(row.id,row.name,item.name)
  22.  
  23. #反向查询
  24. b_list=db_session.query(Boy).all()
  25. for row in b_list:
  26. for item in row.boy2girl:
  27. print(row.id,row.name,item.name)

SQLAlchemy多对多的更多相关文章

  1. Python SQLAlchemy多对多外键关联时表结构

    # 创建多对多表结构 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.engine import cre ...

  2. sqlalchemy多对多查询

    # coding:utf-8 from sqlalchemy import create_engine, Column, String, Integer, ForeignKey, Table from ...

  3. SQLAlchemy 多对多

    创建多对多表 from sqlalchemy.ext.declarative import declarative_base Base=declarative_base() from sqlalche ...

  4. pythonのsqlalchemy多对多关系

    现在来设计一个能描述“图书”与“作者”的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 #!/usr/bin/env python from sqlalchemy imp ...

  5. sqlalchemy 多对多关系

    # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine,ForeignKey,Text,Integer ...

  6. 04:sqlalchemy操作数据库

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  7. 04:sqlalchemy操作数据库 不错

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  8. python-MYSQL(包括ORM)交互

    1.首先,我们必须得连上我们的MYSQL数据库.个人遇到连不上MYSQL数据的问题主要有:数据库的权限问题.数据库表权限的问题 同时获取数据库中的数据等. //==================== ...

  9. 应有dataGridView控件

    using System.Data.SqlClient; namespace UseDataGridView { public partial class Form1 : Form { public ...

随机推荐

  1. python:将时间戳格式化为yyyyMMdd hh:mm:ss

    import time #将10位时间戳或者13位转换为时间字符串,默认为2017-10-01 13:37:04格式 def timestamp_to_date(time_stamp, format_ ...

  2. 【MongoDB学习之三】条件操作符

    环境 MongoDB 4.0 CentOS6.5_x64 一.条件操作符 (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于 ...

  3. [Linux]Ubuntu设置时区和更新时间

    Ubuntu 下执行 date -R 查看现在时区 执行 tzselect查看时区,注意这个命令只能查询不能真正的修改时区 执行下面命令,复制文件到 /etc/可修改时区 sudo cp /usr/s ...

  4. WebGL学习笔记二——绘制基本图元

    webGL的基本图元点.线.三角形 gl.drawArrays(mode, first,count) first,代表从第几个点开始绘制即顶点的起始位置 count,代表绘制的点的数量. mode,代 ...

  5. 【C/C++开发】C++11的模板类型判断——std::is_same和std::decay

    C++11的模板类型判断--std::is_same和std::decay 问题提出:有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是 ...

  6. [ARM-Linux开发]linux dmesg命令参数及用法详解(linux显示开机信息命令)

    功能说明:显示开机信息.语 法:dmesg [-cn][-s <缓冲区大小>]补充说明:kernel会将开机信息存储在ring buffer中.您若是开机时来不及查看信息,可利用dmesg ...

  7. Redis Sentinel 高可用部署实践集群

    一.Redis Sentinel 介绍    1.Sentinel     数据库环境搭建,从单机版到主备.再到多数据库集群,我们需要一个高可用的监控:比如Mysql中,我们可能会采用MHA来搭建我们 ...

  8. Spring 通过@Import实现Bean的注册

    今天看到一个神奇的用法, Spring可以通过@Import导入实现了ImportBeanDefinitionRegistrar接口的类来注册那个类. ImportBeanDefinitionRegi ...

  9. Windows10无法访问局域网文件夹

    给目录guest用户,并启用guest 最近硬盘存储不开资料在同学的电脑存储了然后使用Windows提供的共享文件夹功能提供文件访问,可是今天上午一不小心把系统玩挂了重新安装了Windows10专业工 ...

  10. MyISAM 和 InnoDB 索引的区别

      阅读目录 一 MyISAM索引实现 二 InnoDB索引实现 三 InnoDB索引和MyISAM索引的区别 回到顶部 一 MyISAM索引实现 1. 主键索引 MyISAM引擎使用B+树作为索引结 ...