python orm多對多表結(jié)構(gòu)

現(xiàn)有books表和authors表,可通過書名查對應(yīng)的作者此洲,可通過作者查其對應(yīng)的書厂汗。那么除books表和authors表以外還需另一張表存放書和作者的對應(yīng)關(guān)系。
創(chuàng)建表結(jié)構(gòu)的orm_multiTomulti_connetion.py文件:

import sqlite3
import sqlalchemy
from sqlalchemy import create_engine,Column,Integer,DATE,String,Table,ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,relationship

Base = declarative_base()

#不需要手動(dòng)管理該表呜师,所以不用class的方式創(chuàng)建
book_m2m_author = Table(
    'book_m2m_author',Base.metadata,
    Column('book_id',Integer,ForeignKey('books.id')),
    Column('author_id',Integer,ForeignKey('authors.id'))
)
class Book(Base):
    __tablename__ = 'books'
    id = Column(Integer,primary_key=True)
    name = Column(String(64))
    pub_date = Column(DATE)
    #books表關(guān)聯(lián)authors表娶桦,同通過第二張表book_m2m_author查詢,bachref反向查詢即通過作者查每個(gè)作者對應(yīng)基本書
    authors = relationship('Author',secondary = book_m2m_author,backref = 'books')
    def __repr__(self):
        return self.name

class Author(Base):
    __tablename__ = 'authors'
    id = Column(Integer,primary_key=True)
    name = Column(String(64))
    def __repr__(self):
        return self.name

#mysql '?charset=utf8'必須寫在路徑后面才支持中文
engine = create_engine('sqlite:///F:\軟件下載\自動(dòng)化測試軟件\pycharmProfessional\workspace\c14\sudentsInfo.db3')
Base.metadata.create_all(engine)

添加表數(shù)據(jù)及查詢的orm_multiTomulti_connetion_api.py文件:

from datetime import datetime
from day11 import orm_multiTomulti_connetion
from sqlalchemy.orm import sessionmaker
from sqlalchemy import DATE

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

# book1 = orm_multiTomulti_connetion.Book(name = 'book_name1',pub_date = datetime(2014,10,2))
# book2 = orm_multiTomulti_connetion.Book(name = 'book_name2',pub_date = datetime(2015,10,2))
# book3 = orm_multiTomulti_connetion.Book(name = 'book_name3',pub_date = datetime(2016,10,2))
# session.add_all([book1,book2,book3]) #先提交書的數(shù)據(jù)汁汗,防止后面用到該書名時(shí)卻還未創(chuàng)建造成的錯(cuò)誤
#
# author1 = orm_multiTomulti_connetion.Author(name = 'Tim')
# author2 = orm_multiTomulti_connetion.Author(name = 'Jack')
# author3 = orm_multiTomulti_connetion.Author(name = 'Kimmy')
#
# book1.authors = [author1,author3]
# book3.authors = [author1,author2,author3]
# session.add_all([author1,author2,author3])
# session.commit()

author_obj = session.query(orm_multiTomulti_connetion.Author).filter(orm_multiTomulti_connetion.Author.name == 'Tim').first()
print(author_obj,author_obj.books)

book_obj = session.query(orm_multiTomulti_connetion.Book).filter(orm_multiTomulti_connetion.Book.id == 3).first()
print(book_obj.authors)
book_obj.authors.remove(author_obj)
print(book_obj.authors)

結(jié)果:

Tim [book_name1, book_name3]
[Kimmy, Jack, Tim]
[Kimmy, Jack]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衷畦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子知牌,更是在濱河造成了極大的恐慌祈争,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件角寸,死亡現(xiàn)場離奇詭異菩混,居然都是意外死亡忿墅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門沮峡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疚脐,“玉大人,你說我怎么就攤上這事邢疙」髋” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵秘症,是天一觀的道長照卦。 經(jīng)常有香客問我式矫,道長乡摹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任采转,我火速辦了婚禮聪廉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘故慈。我一直安慰自己板熊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布察绷。 她就那樣靜靜地躺著干签,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拆撼。 梳的紋絲不亂的頭發(fā)上容劳,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音闸度,去河邊找鬼竭贩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛莺禁,可吹牛的內(nèi)容都是我干的留量。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哟冬,長吁一口氣:“原來是場噩夢啊……” “哼楼熄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浩峡,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤可岂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后红符,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體青柄,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伐债,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了致开。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峰锁。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖双戳,靈堂內(nèi)的尸體忽然破棺而出虹蒋,到底是詐尸還是另有隱情,我是刑警寧澤飒货,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布魄衅,位于F島的核電站,受9級特大地震影響塘辅,放射性物質(zhì)發(fā)生泄漏晃虫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一扣墩、第九天 我趴在偏房一處隱蔽的房頂上張望哲银。 院中可真熱鬧,春花似錦呻惕、人聲如沸荆责。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽做院。三九已至,卻和暖如春濒持,著一層夾襖步出監(jiān)牢的瞬間键耕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工弥喉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留郁竟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓由境,卻偏偏與公主長得像棚亩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子虏杰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 有多少美眉希望自己也擁有尖尖的下巴凹ン ?我趕腳喜歡自己纺阔、接納自己就是最美噠瘸彤!越是一樣越不經(jīng)看,越是不同越持久笛钝,哈哈质况!...
    靜靜魚閱讀 179評論 0 1