多外键关联

注:在两个表之间进行多外键链接

如图:

案例:

# 创建两张表并添加外键主键

# 调用Column创建字段 加类型
from sqlalchemy import Integer, ForeignKey, String, Column# 调用基类Base
from sqlalchemy.ext.declarative import declarative_base# 调用操作链接,反查
from sqlalchemy.orm import relationship# 调用链接数据库
from sqlalchemy import create_engineBase = declarative_base()class Customer(Base):__tablename__ = 'customer'id = Column(Integer, primary_key=True)name = Column(String(64))# 以Address表id字段 设置两个外键billing_address_id = Column(Integer, ForeignKey("address.id"))shipping_address_id = Column(Integer, ForeignKey("address.id"))# relationship -允许你在Student表里通过backref字段反向查出所有它在表里的关联项-# foreign_keys=绑定外键 多次relationship 反差会识别不出指定数据所以添加foreign_keys参数。billing_address = relationship("Address",foreign_keys=[billing_address_id])shipping_address = relationship("Address",foreign_keys=[shipping_address_id])class Address(Base):__tablename__ = 'address'id = Column(Integer, primary_key=True)street = Column(String(64))city = Column(String(64))state = Column(String(64))# 返回一个可以用来表示对象的可打印字符串def __repr__(self):return self.street# encoding='utf-8' 链接字符集 ,echo=True 把所有信息打印出来
engine = create_engine("mysql+pymysql://root:123456@192.168.1.100/xiang",encoding='utf-8',#echo=True
                       )#---------------1.创建表-----------------#
# 创建表结构
Base.metadata.create_all(engine)
#---------------------------------------#

# 插入表内字段数据,测试访问

from www import orm_fk
from sqlalchemy.orm import sessionmaker# bind=engine 绑定engine socket实例
Session_class = sessionmaker(bind=orm_fk.engine)# 生成session实例,如同pymysql内的cursor
Session = Session_class()#---------------2.写入数据-----------------## 写入数据
# addr1 = orm_fk.Address(street="Tiantongyuan",city="ChangPing",state="BJ")
# addr2 = orm_fk.Address(street="Wudaokou",city="Haidian",state="BJ")
# addr3 = orm_fk.Address(street="Yanjiao",city="Langfang",state="HB")# 插入数据
# Session.add_all([addr1,addr2,addr3])# 写入数据 并调用 Address字段插入数据 为 Customer数据
# c1 = orm_fk.Customer(name="kevin",billing_address=addr1,shipping_address=addr2)
# c2 = orm_fk.Customer(name="Jack",billing_address=addr3,shipping_address=addr3)# 插入数据
# Session.add_all([c1,c2])
#---------------------------------------##---------------3.查询数据-----------------## 取出Customer内的 内存对象
obj = Session.query(orm_fk.Customer).filter(orm_fk.Customer.name=="kevin").first()# 通过内存 调用第一行name字段数据,
# 调用billing_address对应外键id的对应数据,
# 调用obj.shipping_address对应外键id的对应数据。
print(obj.name,obj.billing_address,obj.shipping_address)
#---------------------------------------## 执行事务
Session.commit()

# 表customer
+----+-------+--------------------+---------------------+
| id | name  | billing_address_id | shipping_address_id |
+----+-------+--------------------+---------------------+
|  1 | kevin |                  1 |                   2 |
|  2 | Jack  |                  3 |                   3 |
+----+-------+--------------------+---------------------+# 表address
+----+--------------+-----------+-------+
| id | street       | city      | state |
+----+--------------+-----------+-------+
|  1 | Tiantongyuan | ChangPing | BJ    |
|  2 | Wudaokou     | Haidian   | BJ    |
|  3 | Yanjiao      | Langfang  | HB    |
+----+--------------+-----------+-------+

数据库测试

转载于:https://www.cnblogs.com/xiangsikai/p/8328430.html

Python sqlalchemy orm 多外键关联相关推荐

  1. Python sqlalchemy orm 多对多外键关联

    多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...

  2. 【Python】django模型models的外键关联使用

    [Python]django模型models的外键关联使用 Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-61830 ...

  3. SQLAlchemy的使用---外键ForeignKey数据库创建与连接

    SQLAlchemy的使用---外键ForeignKey数据库创建与连接 # 一对多建表操作 from sqlalchemy.ext.declarative import declarative_ba ...

  4. JPA关系映射系列一:one-to-one外键关联

    2019独角兽企业重金招聘Python工程师标准>>> SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为 ...

  5. Spring Data JAP框架处理表关系的步骤(一对一外键关联

    Spring Data JAP框架处理表关系的步骤: 1)确定表和表之间的关系 2)对应表创建实体类 3)在实体类配置注解关联关系 4)测试 一对一表关系的实现方案(外键关联: 1 在Customer ...

  6. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联...

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

  7. PostgreSQL — 外键关联操作

    目录 文章目录 目录 PostgreSQL 的外键关联 创建表时定义外键(References,参照) 修改原有表的外键约束 删除外键约束 参考文档 PostgreSQL 的外键关联 一个外键约束指定 ...

  8. MySQL — 外键关联操作

    目录 文章目录 目录 MySQL 的外键约束 创建表时定义外键(References,参照) 修改原有表的外键约束 删除外键约束 参考文档 MySQL 的外键约束 注意,MySQL 的 InnoDB ...

  9. hibernate---一对一单项外键关联

    常见的数据库设计有两种:主键关联,单项的外键关联. 下面是一对一单项外键关联: 代码: 后台生成的表: 配置powerdesigner连接数据库,可以查看数据表的关联: 一般在powerdesigne ...

最新文章

  1. 如何才能建立起似然函数
  2. 深度学习背后的基础-神经网络揭秘
  3. 方差分析中怎么看有无显著性影响_用R语言做单因素方差分析及多重比较
  4. Matlab最短路学习
  5. Download Excel
  6. KindEditor上传的图片显示在jsp页面上时调整布局
  7. Mac OS使用技巧十八:Safari碉堡功能之一制作Widget
  8. python 画蜘蛛_如何学习 R 绘图?
  9. maven关联oracle,maven添加oracle jdbc依赖
  10. java 发送带basic认证的http post请求实例代码_图解HTTP学习笔记(八)—确认访问用户身份的认证...
  11. win8系统装c语言编程软件哪个好,win8系统安装c语言方法
  12. android 获取monkey日志_Monkey日志如何分析
  13. 04.如何升级扩展以支持Visual Studio 2019
  14. App Store 4.3 大礼包被拒解决方案-本地差异化
  15. linux司机售票员问题
  16. [笔记]Unity粒子特效1初次了解
  17. 医疗器械软件网络安全法规和标准概述(本文末付本文提到的所有标准)
  18. c语言5的阶乘流程图_10的阶乘(10的阶乘算法流程图)
  19. 微分几何与斯托克定理
  20. Android 11 inputflinger分析(触摸优先级)

热门文章

  1. 用webstorm自动编译less产出css和sourcemap
  2. Windows 8 C++/CX字符串
  3. 用数据辅助设计-搜索中的实践
  4. Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例
  5. Oracle 存储过程错误之PLS-00201: 必须声明标识符
  6. 盐城出台推进大数据产业发展实施意见
  7. 2018-2019-1 《信息安全系统设计基础》教学进程
  8. [20160201]db_link与子光标问题.txt
  9. poj2299 ( bit )
  10. 查找乱码字符串的SQL