碼迷,mamicode.com
首頁 > 數據庫 > 詳細

SQLAlchemy 多對多

時間:2021-07-26 16:48:08      閱讀:0      評論:0      收藏:0      [點我收藏+]

標簽:column   comm   figure   base   maker   metadata   ack   second   temp   

參考官網: https://www.pythoncentral.io/sqlalchemy-orm-examples/  

員工部門兩個表,中間為多對多關系,這種一般需要創建一個中間表。多對多轉換成一對多

from sqlalchemy import Integer, Column, String, ForeignKey
from sqlalchemy.orm import declarative_base, relationship, backref, sessionmaker
from sqlalchemy import create_engine

Base = declarative_base()


class Department(Base):
    __tablename__ = department
    id = Column(Integer, primary_key=True)
    name = Column(String)
    employees = relationship(Employee, secondary=department_employee)


class Employee(Base):
    __tablename__ = employee
    id = Column(Integer, primary_key=True)
    name = Column(String)
    departments = relationship(Department, secondary=department_employee)


class DepartmentEmployee(Base):
    __tablename__ = department_employee
    department_id = Column(Integer, ForeignKey(department.id), primary_key=True)
    employee_id = Column(Integer, ForeignKey(employee.id), primary_key=True)


engine = create_engine("sqlite:///")
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)

s = session()
john = Employee(name=Jhon)
s.add(john)
it_department = Department(name=IT)
it_department.employees.append(john)
s.add(it_department)
s.commit()
johnDB = s.query(Employee).filter(Employee.name == Jhon).one()
print(johnDB.name)
print(johnDB.departments[0].name)

 

SQLAlchemy 多對多

標簽:column   comm   figure   base   maker   metadata   ack   second   temp   

原文地址:https://www.cnblogs.com/luckygxf/p/15057503.html

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 mamicode.com 版權所有  聯系我們:gaon5@hotmail.com
迷上了代碼!
4399在线看MV_久久99精品久久久久久久久久_成人又黄又爽又刺激视频_能收黄台的app不收费