第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQLAlchemy 中關(guān)系定義的幾個問題( 一對一 / 多對多 )

SQLAlchemy 中關(guān)系定義的幾個問題( 一對一 / 多對多 )

有只小跳蛙 2019-02-24 06:58:08
2016/11/11 問題 官網(wǎng)關(guān)于這一部分的講解, 不是很詳細(xì), 尤其是拿 Parent 和 Child 作為比喻, 感覺不是很形象, 我基于自己的理解,寫了對應(yīng)的的 demo, 但是不是很清楚: 是否符合最佳實踐 是否漏掉了某些最佳實踐? 我看書, 了解到, 實際生產(chǎn)中, 雖然外鍵可以降低開發(fā)成本, 但是許多情況下不推薦外鍵來關(guān)聯(lián), 另有其他方法, 不知這句話的內(nèi)涵是什么? 相關(guān)代碼 多對多 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy import (Table, Column, Integer, String, Numeric, DateTime) from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey engine = create_engine('sqlite:///:memory:') Base = declarative_base() Session = sessionmaker(bind=engine) session = Session() class Many1(Base): __tablename__ = 'many1' id = Column(Integer, primary_key=True, autoincrement=True) attr1 = Column(String, nullable=False) many2 = relationship('Many2', back_populates='many1', secondary=many1_many2_table) # 1?? 定義正確? class Many2(Base): __tablename__ = 'many2' id = Column(Integer, primary_key=True, autoincrement=True) attr2 = Column(String, nullable=False) many1 = relationship('Many1', back_populates='many2', secondary=many1_many2_table) # 2?? 定義正確? many1_many2_table = Table('many1_many2', Base.metadata, Column('many1_id', Integer, ForeignKey('many1.id')), Column('many2_id', Integer, ForeignKey('many2.id'))) 1. 查詢 m1 身上所有的 Many2 ( m1 是 Many1 的實例 ) a. return m1.many2 這種能寫嗎, 其實這種很直觀! Elixir中能夠這樣寫 b. session.query(Many2).filter(Many2.many1 == m1).all() 2. 定義多對多, 需要額外定義一張關(guān)聯(lián)表, 難道沒有一勞永逸的辦法嗎? ( 生產(chǎn)數(shù)據(jù)庫中可不止幾張關(guān)系表, 都要手寫? ) 一對一 class One1(Base): __tablename__ = 'one1' id = Column(Integer, primary_key=True, autoincrement=True) attr1 = Column(String, nullable=False) one2 = relationship('One2', back_populates='one1', uselist=False) # 1?? 看官網(wǎng)文檔, 只需要添加 uselist 這個參數(shù)即可 class One2(Base): __tablename__ = 'one2' id = Column(Integer, primary_key=True, autoincrement=True) attr2 = Column(String, nullable=False) one1_id = Column(Integer, ForeignKey('one1.id'))
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 555 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號