美文网首页
python orm多外键关联

python orm多外键关联

作者: 奔跑的老少年 | 来源:发表于2018-08-16 11:33 被阅读0次

创建表结构orm_multiForeignKey_fk.py文件

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey
from sqlalchemy.orm import sessionmaker,relationship

Base = declarative_base()

class Customer(Base):
    __tablename__ = 'customer'
    id = Column(Integer,primary_key=True)
    name = Column(String)
    billing_address_id = Column(Integer,ForeignKey('address.id'))
    shipping_address_id = Column(Integer, ForeignKey('address.id'))

    billing_address = relationship('Address',foreign_keys = [billing_address_id])
    shipping_address = relationship('Address',foreign_keys = [shipping_address_id])

    def __repr__(self):
        return self.name

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
engine = create_engine('sqlite:///F:\软件下载\自动化测试软件\pycharmProfessional\workspace\c14\sudentsInfo.db3')
Base.metadata.create_all(engine)

创建数据及查询orm_multiForeignKey_fk_api.py文件:

from day11 import orm_multiForeignKey_fk
from sqlalchemy.orm import sessionmaker

session_class = sessionmaker(bind=orm_multiForeignKey_fk.engine)
session = session_class()

#添加数据
# addr1 = orm_multiForeignKey_fk.Address(street = 'street1',city = 'city1',state = 'state1')
# addr2 = orm_multiForeignKey_fk.Address(street = 'street2',city = 'city2',state = 'state2')
# addr3 = orm_multiForeignKey_fk.Address(street = 'street3',city = 'city3',state = 'state3')
# session.add_all([addr1,addr2,addr3])
# c1 = orm_multiForeignKey_fk.Customer(name = 'Tim',billing_address = addr1,shipping_address = addr2)
# c2 = orm_multiForeignKey_fk.Customer(name = 'kite',billing_address = addr3,shipping_address = addr3)
# session.add_all([c1,c2])
# session.commit()

obj = session.query(orm_multiForeignKey_fk.Customer).filter(orm_multiForeignKey_fk.Customer.name == 'Tim').first()
print(obj.name,obj.billing_address,obj.shipping_address)

输出结果:

Tim street1 street2

customer表可共用地址表address数据,通过address中的id关联起来

相关文章

  • python orm多外键关联

    创建表结构orm_multiForeignKey_fk.py文件 创建数据及查询orm_multiForeignK...

  • Tortoise筛选关联关系表数据-Prefetch

    在FastApi里面使用Tortoise-orm,查询关联表数据(外键、一对多、多对多等)时,可以用select_...

  • ORM 关联关系

    关于文档的注解:仅供学习所用!!! -- ORM的映射关联关系,需要字段之间建立外键(如果指明可以省略建立外键) ...

  • Hibernate9-Hibernate一对一外键&一对

    一对一外键双向关联 注:一对一外键双向关联是一对多外键关联的特例,只是在多的一方加了一个唯一性约束。USERS1表...

  • 2018-01-19

    1对n关系:外键关联与逻辑外键外键关联缺陷:外键字段的值必须依赖于另一张表的唯一性约束字段逻辑关联缺陷:逻辑外键所...

  • 初识Hibernate之关联映射(二)

    基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单向多对多关联映射 一、基于外键的单向一对一关联映射具...

  • Django 多表关联

    1. 一对一关联关系 使用方法数据库体现Django程序模型通过外键关联,外键要设在多的一方OneToOneFie...

  • hibernate笔记-关联关系

    hibernate 关联关系主要有一对一,一对多,多对多 一对一关联 一对一关联包括: 主键关联 唯一外键关联 主...

  • SQLite子查询和连接查询Demo

    --一对多外键关联create table TbDept(deptno tinyint primary key,d...

  • Django - ORM外键

    表和表之间可以存在关系,最多的是一对多的关系。外键字段: 示例: 注意:虽然models.py类中是属性user_...

网友评论

      本文标题:python orm多外键关联

      本文链接:https://www.haomeiwen.com/subject/agrnbftx.html