ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sqlalchemy多外键关联

2019-04-03 11:49:20  阅读:274  来源: 互联网

标签:sqlalchemy 多外键 Column many 关联 session address fk


sqlalchemy_many_fk.py

 

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

engine=create_engine("mysql+pymysql://root:123456@192.168.0.6/shop_db",
                     encoding='utf-8',echo=False)#连接数据库 echo=TRUE输出执行过程
Base.metadata.create_all(engine)#创建表

 

 

sqlalchemy_many_fk_api.py

from day12 import sqlalchemy_many_fk
from sqlalchemy.orm import sessionmaker

#连接mysql
Session_class = sessionmaker(bind=sqlalchemy_many_fk.engine)  # 创建与数据库的连接session class ,注意,这里返回给session的是个class,不是实例
session = Session_class()  # 生成session实例 session会话 类似cursor
'''
#插入数据
addr1=sqlalchemy_many_fk.Address(street="bantian",city='longgang',state="SZ")
addr2=sqlalchemy_many_fk.Address(street="yousong",city='longhua',state="SZ")
addr3=sqlalchemy_many_fk.Address(street="shayuanpu",city='changan',state="DG")
session.add_all([addr1,addr2,addr3])

c1=sqlalchemy_many_fk.Customer(name="kobe",billing_address=addr1,shipping_address=addr2)
c2=sqlalchemy_many_fk.Customer(name='jack',billing_address=addr3,shipping_address=addr3)
session.add_all([c1,c2])
'''
#查数据
obj=session.query(sqlalchemy_many_fk.Customer).filter(sqlalchemy_many_fk.Customer.name=="kobe").first()
print(obj.name,obj.billing_address,obj.shipping_address)


session.commit()

标签:sqlalchemy,多外键,Column,many,关联,session,address,fk
来源: https://www.cnblogs.com/leiwenbin627/p/10647889.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有