day12_04 orm_manay_fk

Posted flytoyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day12_04 orm_manay_fk相关的知识,希望对你有一定的参考价值。

orm_manay_fk.py

# Author:Adminone

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

Base = declarative_base()

class Customer(Base):
    __tablename__ = \'customer\'
    id = Column(Integer, primary_key=True)
    name = Column(String(64))

    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])  #送达地址

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 "<street:%s>" % (self.street)

engine = create_engine("mysql+pymysql://root:alex3714@192.168.56.12/oldboy",
                       encoding=\'utf-8\')#,echo=True)

Base.metadata.create_all(engine)  # 创建表结构

orm_manay_fk_api.py

# Author:Adminone

import orm_manay_fk
from sqlalchemy.orm import sessionmaker, relationship


Session_class = sessionmaker(bind=orm_manay_fk.engine)  # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
session = Session_class()  # 生成session实例

#数据插入
\'\'\'
addr1 = orm_manay_fk.Address(street="Tiantongyuan", city="chuangPing",state="BJ")
addr2 = orm_manay_fk.Address(street="Wudaokou", city="HaiDian",state="BJ")
addr3 = orm_manay_fk.Address(street="Yanjiao", city="LangFang",state="HB")

session.add_all([addr1,addr2,addr3])
c1 = orm_manay_fk.Customer(name="Alex",billing_address=addr1,shipping_address=addr2)
c2 = orm_manay_fk.Customer(name="Jack",billing_address=addr3,shipping_address=addr3)

session.add_all([c1,c2])
session.commit()
\'\'\'

#信息查询
obj = session.query(orm_manay_fk.Customer).filter(orm_manay_fk.Customer.name=="alex").first()
print(obj.name,obj.billing_address,obj.shipping_address)

session.commit()

以上是关于day12_04 orm_manay_fk的主要内容,如果未能解决你的问题,请参考以下文章

day12_04 mysql外键单文件

day01_04.变量

day12_框架二tools.py代码

day12_框架一sendmail.py代码

day12_框架一main.py代码

day12_框架一start.py代码