SQLAlchemy 多对多
时间:2021-07-01 10:21:17
帮助过:18人阅读
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