创建多对多表
from sqlalchemy.ext.declarative import declarative_base Base=declarative_base() from sqlalchemy import Column,String,Integer,ForeignKey from sqlalchemy.orm import relationship class Girl(Base): __tablename__="girl" id = Column(Integer,primary_key=True) name=Column(String(32)) #secondary="Hotel" 表示两个表关联Hotel girl2boy = relationship("Boy",secondary="hotel",backref="boy2girl" ) class Boy(Base): __tablename__ = "boy" id = Column(Integer,primary_key=True) name = Column(String(32)) class Hotel(Base): __tablename__ = "hotel" id=Column(Integer,primary_key=True) girl_id =Column(Integer,ForeignKey("girl.id")) boy_id=Column(Integer,ForeignKey("boy.id")) from sqlalchemy import create_engine engine=create_engine("mysql+pymysql://root:@127.0.0.1:3306/day127?charset=utf8") Base.metadata.create_all(engine)
添加多对多数据
from sqlalchemy.orm import sessionmaker from SQL.M_M import engine,Boy Session=sessionmaker(engine) db_session=Session() #反向添加 # boy_obj=Boy(name="kobe") # boy_obj.boy2girl =[Girl(name="dva"),Girl(name="xiaoemi")] # db_session.add(boy_obj) # db_session.commit() # db_session.close() #正向添加 # girl_obj=Girl(name="anna",girl2boy=[Boy(name="curry"),Boy(name="green")]) # db_session.add(girl_obj) # db_session.commit() # db_session.close() #正向查询 # g_list=db_session.query(Girl).all() # for row in g_list: # for item in row.girl2boy: # print(row.id,row.name,item.name) #反向查询 b_list=db_session.query(Boy).all() for row in b_list: for item in row.boy2girl: print(row.id,row.name,item.name)
原文:https://www.cnblogs.com/qq849784670/p/10386152.html