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并获取 ...
随机推荐
- 最终版alpha阶段总结
这是我们组最终的alpha阶段总结,我和陈汝婷虽然最后做的没有想象的好,时间也很紧急,但是真的学到很多,毕竟现在我们两个人做的活是其他组四个人做的活,其实能做到这样,哪怕这样,我们也觉得没有什么遗憾了 ...
- git 使用ssh密钥
一.查看仓库支持的传输协议 1.1查看仓库支持的传输协议 使用命令 git remote -v 查看你当前的 remote url root@zengyue:/home/yuanGit# git re ...
- Android WebView 文明踩坑之路
情景一 webview 以头布局的形式添加到 RecyclerView 中,第一次进入页面,当页面中有 EditText 并且点击时,甚至是类似点赞更换图片.点击 WebView 任意区域,都会造成 ...
- shell脚本--数值比较
用于数值比较的无非大于.小于.等于.大于等于.小于等于这几个. 比较格式: [ 数值1 比较符 数值2 ] 注意左边的括号与数值1之间有一个空格,同样,数值2和右边的括号之间也有空格. 数值比较运 ...
- leetcode:Reverse Integer 及Palindrome Number
Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...
- Android Studio & HTTP Proxy
Android Studio & HTTP Proxy https://mirrors.neusoft.edu.cn/android https://mirrors.neusoft.edu.c ...
- SQL ROUND函数的使用
SQL ROUND函数的使用 SQL ROUND函数是对数据进行制定精度的取值. 第一个参数是取值的数据,第二个参数是精度,第三个参数是数据取值模式(四舍五入还是截断),其中第三个参数是可选参数, ...
- html web服务器
web服务器可以发布网站,从而使得网站可以被全世界访问: 在自己服务器上托管自己的网站的要求: 硬件搭建:强大的服务器硬件,保证24小时高速连接, 软件搭建:服务器授权比客户端授权更贵: 人工费:环境 ...
- semantic segmentation with deeplearning
a 2017 guide to semantic segmentation with deep learning paper: http://blog.qure.ai/notes/semantic-s ...
- MyBatis:一对一关联查询
MyBatis从入门到放弃三:一对一关联查询 前言 简单来说在mybatis.xml中实现关联查询实在是有些麻烦,正是因为起框架本质是实现orm的半自动化. 那么mybatis实现一对一的关联查询则是 ...