一、前言

  如果有张表A的多个字段关联另一张表B的一个字段,就如同一个客户表的账单地址和发货地址,同时关联地址表中的id字段。

 

二、事例

# -*- coding: UTF-8 -*-
from sqlalchemy import create_engine
from sqlalchemy import Integer, ForeignKey, String, Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship



engine = create_engine("mysql+pymysql://bigberg:111111@172.16.200.49:3306/study",
                       encoding="utf-8", )  # 连接数据库,echo=True =>把所有的信息都打印出来

Base = declarative_base()  # 生成orm基类

class Customer(Base):
    __tablename__ = 'customer'
    id = Column(Integer, primary_key=True)
    name = Column(String(32), nullable=False)
    # 多个外键关联
    billing_address_id = Column(Integer, ForeignKey("address.id"))
    shopping_address_id = Column(Integer, ForeignKey("address.id"))
    # foreign_keys 一定要加,否则会报错
    billing_address = relationship("Address",foreign_keys=[billing_address_id])
    shopping_address = relationship("Address",foreign_keys=[shopping_address_id])


class Address(Base):
    __tablename__ = 'address'
    id = Column(Integer, primary_key=True)
    street = Column(String(64), nullable=False)
    city = Column(String(64), nullable=False)
    state = Column(String(64), nullable=False)

    def __repr__(self):
        return "省份:%s 城市:%s 街区:%s" %(self.state, self.city, self.street)

# 创建表
Base.metadata.create_all(engine)
multi_fk

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2021-06-20
  • 2022-12-23
  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2022-01-13
  • 2021-08-07
  • 2022-12-23
  • 2021-07-13
相关资源
相似解决方案