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并获取 ...
随机推荐
- 转:为Docker容器设置固定IP实现网络联通(1)——通过Pipework为Docker容器设置
https://blog.csdn.net/chinagissoft/article/details/51250839 1. 创建并启动一个容器: docker run --cap-add=NET_A ...
- mongo扩展错误
make: *** [php_mongo.lo] Error 1 Ask Question 0 When I installed the Mongo PHP extension, the foll ...
- [转帖]Asp.Net MVC EF各版本区别
Asp.Net MVC EF各版本区别 https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 201 ...
- 在 Linux 虚拟机中手动安装或升级 VMware Tools
对于 Linux 虚拟机,您可以使用命令行工具手动安装或升级 VMware Tools. 本次Linux 虚拟机为CentOS6.5 先决条件开启虚拟机.确认客户机操作系统正在运行.由于 VMware ...
- __slots__用法以及优化
其实也是无意之中又看到这个东西,这次索性再记一下,免得下次忘记又再看一遍,往复循环浪费了太多时间. __slots__其实我做项目这么久还没有主动使用过.下面reference有提到这么一句话 War ...
- loadrunner 基础-学习笔记一
由于公司要使用loadrunner暂停学习jmeter 1 loadrunner组件: virtual user generator:录制最终用户业务流程并创建自动化性能测试脚本,vuser脚本 co ...
- rabbitmq线上服务器与项目结合的问题总结
一.特殊字符需要转义 只需要加个\反斜杠就可以了 二.zk的connectString 在rabbit web页面上登录上去,新增queue就可以了
- selenium之批量执行测试用例
把写好的测试用例放在指定目录下,使用discover函数扫描该目录,并根据关键字自动筛选需要执行的用例.本例使用Python3.6版本. # 遍历指定目录,批量执行测试用例 import unitte ...
- Django-website 程序案例系列-5 模态对话框实现提交数据
html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- BZOJ4008 : [HNOI2015]亚瑟王(期望dp)
题意 略(看了20min才看懂...) 题解 我一开始天真地一轮轮推期望,发现根本不好算... 唉~ 不会做就只能抄题解咯 看了一波DOFY大佬的解法qwq 发现有句神奇的话 记住,期望要倒着推... ...