python---ORM之SQLAlchemy(4)relationship多对多练习
练习一:朋友
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base engine = create_engine("mysql+pymysql://root:root@127.0.0.1/t2?charset=utf8") Base = declarative_base() class Men_to_Wemon(Base):
__tablename__ = "men_to_women" nid = Column(Integer, primary_key=True)
men_id = Column(Integer, ForeignKey('men.id'))
women_id = Column(Integer, ForeignKey('women.id')) class Men(Base):
__tablename__ = 'men' id = Column(Integer, primary_key=True)
name = Column(String())
age = Column(String())
#gf = relationship("Women", secondary=Men_to_Wemon.__table__) class Women(Base):
__tablename__ = "women" id = Column(Integer, primary_key=True)
name = Column(String())
age = Column(String()) bf = relationship("Men",secondary=Men_to_Wemon.__table__,backref='gf')
#backref相当于在men表中加了一个关于women的对象叫gf
#secondary是第三张表,用于多对多
#bf = relationship("Men",secondary=Men_to_Wemon.__table__)
Base.metadata.create_all(engine) MySession = sessionmaker(bind=engine)
session = MySession() m1 = session.query(Men).filter_by(id=).first()
#所有女
w1 = session.query(Women).all()
m1.gf = w1 session.add(m1)
session.commit()
练习二:主机和分组
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column,String,ForeignKey,Integer
from sqlalchemy.orm import relationship,sessionmaker
from sqlalchemy.ext.declarative import declarative_base engine = create_engine("mysql+pymysql://root:root@127.0.0.1/t2?charset=utf8")
Base = declarative_base() class HostToGroup(Base):
__tablename__ = 'host_2_group'
nid = Column(Integer,primary_key=True)
host_id = Column(Integer,ForeignKey('host.id'))
group_id = Column(Integer,ForeignKey('group.id')) class Group(Base):
__tablename__ = 'group'
id = Column(Integer,primary_key=True)
name = Column(String(),unique=True) class Host(Base):
__tablename__ = 'host'
id = Column(Integer,primary_key=True)
hostname = Column(String(),unique=True)
ip_addr = Column(String())
port = Column(String(),default=)
group = relationship('Group',secondary=HostToGroup.__table__,backref="host_list") Base.metadata.create_all(engine) MySession = sessionmaker(bind=engine)
session = MySession() # g1 = Group(name='g1')
# g2 = Group(name='g2')
# g3 = Group(name='g3')
# g4 = Group(name='g4')
#
# session.add_all([g1,g2,g3,g4])
# session.commit()
#
# h1 = Host(hostname='h1',ip_addr='192.168.0.0.1')
# h2 = Host(hostname='h2',ip_addr='192.168.0.0.2',port=)
# h3 = Host(hostname='h.',ip_addr='192.168.0.0.3',port=) # h1.group=[g2,g4]
# session.add_all([h1,h2,h3])
# session.commit() # groups = session.query(Group).all()
# h2 = session.query(Host).filter(Host.hostname=='h2').first()
# h2.group=groups[:-]
#
# session.add(h2)
# session.commit() g4 = session.query(Group).filter(Group.name=='g4').first() obj1 = session.query(Host).filter(Host.hostname=='h2').update({'port':})
obj2 = session.query(Host).filter(Host.hostname=='h2').first() g4.host_list.append(obj2) session.add(g4)
session.commit()
python---ORM之SQLAlchemy(4)relationship多对多练习的更多相关文章
- Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...
- python ORM之sqlalchemy
前沿对象关系映射ORM是在实际应用编程中常用到的技术,它在对象和关系之间建立了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化.简单来说就是开发人员在使用ORM模型编程时,不需 ...
- python ORM模块sqlalchemy的使用
1.安装sqlalchemy pip install sqlalchemy 2.导入必要的包及模块 import sqlalchemy from sqlalchemy.ext.declarative ...
- python连接数据库使用SQLAlchemy
参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...
- Python ORM框架之SQLAlchemy
前言: Django的ORM虽然强大,但是毕竟局限在Django,而SQLAlchemy是Python中的ORM框架: SQLAlchemy的作用是:类/对象--->SQL语句--->通过 ...
- python(十二)下:ORM框架SQLAlchemy使用学习
此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...
- python的ORM框架SQLAlchemy
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...
- Python与数据库[2] -> 关系对象映射/ORM[0] -> ORM 与 sqlalchemy 模块
ORM 与 sqlalchemy 1 关于ORM / About ORM 1.1 ORM定义 / Definition of ORM ORM(Object Relational Mapping),即对 ...
- Python学习笔记整理总结【ORM(SQLAlchemy)】
一.介绍SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执 ...
- python、第七篇:ORM框架SQLAlchemy
一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...
随机推荐
- 基于SSH实现员工管理系统之框架整合篇
本篇文章来源于:https://blog.csdn.net/zhang_ling_yun/article/details/77803178 以下内容来自慕课网的课程:基于SSH实现员工管理系统之框架整 ...
- HDU 2033 人见人爱A+B
http://acm.hdu.edu.cn/showproblem.php?pid=2033 Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的 ...
- Jenkins Jfrog Artifactory 以及docker下的pipeline 容器编排实践
1. 测试环境情况: Docker主机 10.24.101.99 JFrog Artifactory 主机 (admin password) jenkinx github原始地址:https://gi ...
- Jfrog Artifactory 创建docker 镜像仓库以及 push 镜像到 该仓库.
1. 安装aitifactory 以及 启动 使用30天有效期激活 不在阐述. 2. 登录artifactory username:admin password:password 3. 创建 仓库 在 ...
- session存入redis
Session信息入Redis Session简介 session,中文经常翻译为会话,其本来的含义是 指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一 ...
- unwrap bug
https://cn.mathworks.com/matlabcentral/newsreader/view_thread/93276
- ceph 性能测试
我在物理机上创建了5台虚拟机,搭建了一个ceph集群,结构如图: 具体的安装步骤参考文档:http://docs.ceph.org.cn/start/ http://www.centoscn.com/ ...
- Java8的flatMap如何处理有异常的函数
Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional. 见到的映射函数往往都只有一句话,连大括号都不需要加的,如下: ...
- 稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。
稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记. 还有 google 在 udacity 上的 CNN 教程. CNN(Convolutional Neural Networks) 卷积神经网络简单 ...
- BZOJ 4009: [HNOI2015]接水果
4009: [HNOI2015]接水果 Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 636 Solved: 300[Submit][Status] ...